Auswählen einer einzelnen Zeile ohne eindeutigen Schlüssel

8

Ich habe einen Tisch wie diesen

%Vor%

Beachten Sie, dass keine Spalte eindeutig ist. Es kann viele Zeilen mit Fld1 = 0 geben, aber für alle anderen Werte ist Fld1 eindeutig und es gibt möglicherweise viele Zeilen mit demselben Wert für Fld2.

Ich muss für jeden Wert von Fld2 eine Zeile mit dem höchsten Wert in Fld 1 auswählen. Das Ergebnis wäre also

%Vor%     
Myles McDonnell 15.04.2015, 15:06
quelle

3 Antworten

7

Eine Alternative zu GROUP BY wäre die Verwendung einer Fensterfunktion wie row_number() um das Ergebnis zu erhalten. Diese Funktion erstellt eine eindeutige Nummer, indem Sie Ihre Daten nach Fld2 partitionieren und nach Fld1 desc :

sortieren %Vor%

Siehe SQL-Geige mit Demo . Es gibt Zeiten, in denen row_number einfacher ist, wenn Sie zusätzliche Spalten haben, die eindeutig sind. Dies ergibt ein Ergebnis:

%Vor%     
Taryn 15.04.2015, 15:09
quelle
1

Verwenden Sie group by :

%Vor%     
Gordon Linoff 15.04.2015 15:07
quelle
0

a) Holen Sie sich das erste Ergebnis, das laut Gordons Antwort nur zwei Spalten enthält.
b) Verwenden Sie es, um nach den verbleibenden Spalten zu suchen.

%Vor%     
Alexander 15.04.2015 15:25
quelle

Tags und Links