erst sortieren, dann gruppieren

alexfrenzel92

SQL-Guru
Beiträge
122
Mir ist klar, dass das kein kostenloser Code-Schreibe-Dienst hier ist aber ich blicke gerade nicht wirklich durch.

Wie kann ich eine Datenbank auf die Werte gruppieren, in denen ein anderer Wert in dieser Spalte für das gruppierte Objekt das Maximum ist?

A | B | C
f | 3 | 1
f | 2 | 4
g | 1 | 5

Ich möchte den Wert aus Spalte C der jeweils auf den Wert in Spalte A gruppiert wird.
Der Logik nach müsste man zuerst sortieren und dann gruppieren.

Das Ergebnis wäre
A | B | C
f | 2 | 4
g | 1 | 5

Zeile 3, weil sie der einzige Wert mit "g" ist und Spalte 2, weil sie die Spalte ist, die den höchsten Wert in C aller Zeilen enthält, die in Spalte A f ist.

mfg
Alex
 
Werbung:
Mir ist klar, dass das kein kostenloser Code-Schreibe-Dienst hier ist aber ich blicke gerade nicht wirklich durch.

Wie kann ich eine Datenbank auf die Werte gruppieren, in denen ein anderer Wert in dieser Spalte für das gruppierte Objekt das Maximum ist?

A | B | C
f | 3 | 1
f | 2 | 4
g | 1 | 5

Ich möchte den Wert aus Spalte C der jeweils auf den Wert in Spalte A gruppiert wird.
Der Logik nach müsste man zuerst sortieren und dann gruppieren.

Das Ergebnis wäre
A | B | C
f | 2 | 4
g | 1 | 5

Zeile 3, weil sie der einzige Wert mit "g" ist und Spalte 2, weil sie die Spalte ist, die den höchsten Wert in C aller Zeilen enthält, die in Spalte A f ist.

mfg
Alex
Das geht ganz einfach über Window-Funktionen, die MySQL nicht kann.
 
Werbung:
Also wenn ich dich richtig verstehe suchst du:
Code:
SELECT t1.A,t2.B,t1.C FROM ( SELECT A,max(C) AS C FROM tabelle GROUP BY A ) t1 LEFT JOIN tabelle t2 ON t1.A = t2.A AND t1.C = t2.C


Allerdings wird dann auch aus
A | B | C
f | 3 | 1
f | 2 | 4
f | 3 | 4
g | 1 | 5

Ergebnis
A | B | C
f | 2 | 4
f | 3 | 4
g | 1 | 5
 
Zurück
Oben