Ich bin mir nicht sicher, ob es elegantere Art und Weise ist das als vom Benutzer zu lösen, und rownum (in Oracle), aber hier geht:mit mehreren Aggregatfunktion basierten einer Zeile auswählen Bedingungen ohne Unterabfrage
Ich habe diese Tabelle (genannt Gewinner):
Name Salary House Kids
--------------------------------
Barabara 2500.00 40 4
Dale 2000.00 60 3
Aaron 2000.00 45 2
Joe 2000.00 45 4
Jacob 2000.00 50 4
Melissa 2500.00 50 4
Haus bedeutet Hausgröße in qm.
Ich brauche eine Abfrage (ohne Unterabfrage), die einen "Gewinner" finden wird (der Name, aber die Zeile kann mit mehr Spalten sein). der „Gewinner“ ist wie so definiert:
- verdient das niedrigste Gehalt
- (im Fall der Bindung :) hat das kleinste Haus
- (bei einer anderen Bindung :) hat die größte Anzahl von Kindern .
In diesem Beispiel ist der Gewinner Joe die 2000 verdient, hat Hausgröße von 45 und hat vier Kinder.
Der einzige Weg, (die mit den Indizes nur einen sehr einfachen, aber effizienten Code hat, und hat immer noch eine Art von Unterabfrage (Inline), hat also eine anderes wählt) ist:
select *
from
(select name
from winner
order by salary, house, kids desc)
where rownum = 1;
Gibt es eine andere Art und Weise zu Tun Sie dies ohne Unterabfrage? (vielleicht Aggregatfunktionen?)
werden Sie eine "Join" betrachten? – Bulat
Dies ist der Standard Weg, um Ihr Problem zu lösen. Warum brauchen Sie eine Abfrage * ohne Unterabfrage *? – mathguy
ist es eine Aufgabe. könnte ich eine "Join" betrachten. Denkst du, es ist der einzige Weg? – Neer