Wie lautet die richtige SQL Abfrage?
Hi,
ich habe folgende Tabelle:
ID | Einheit | CN | Koordinate X | Koordinate Y
1 | A | 0 | 50.1123 | 92.123
2 | B | 0 | 12.4512 | 12.231
3 | C | 0 | 9.23222 | 32.232
4 | A | 1 | 51.3123 | 92.123
5 | B | 1 | 12.4512 | 3.45345
jetzt möchte ich gern für jede Einheit die höchste CN ausgeben lassen. Das heißt, ich möchte die Datensätze mit der ID 3,4 und 5 ausgeben lassen.
-> Einheit C hat nur einen Datensatz, deswegen ist das der höchste, bei Einheit A und B wurden die X- bzw. Y-Koordinate bearbeitet und haben deswegen eine neuen Datensatz mit einer höheren CN.
Also, meine Frage lautet, weis jemand wie die SQL Abfrage aussehen muss um mein gewünschtes Ergebnis zu erhalten? :)
Vielen Dank
Grüße
2 Antworten
Schau mal ob diese Lösung für dich passt:
SELECT ID, Einheit, Max(CN) FROM table
group by Einheit
bei "table" muss natürlich dein Tabellenname stehen
SQL> select * from test;
ID E CN X Y
---------- - ---------- ---------- ----------
1 A 0 50,1123 92,123
2 B 0 12,4512 12,231
3 C 0 9,23222 32,232
4 A 1 51,3123 92,123
5 B 1 12,4512 3,45345
SQL> SELECT ID, Einheit, Max(CN) FROM test group by Einheit;
SELECT ID, Einheit, Max(CN) FROM test group by Einheit
*
FEHLER in Zeile 1:
ORA-00979: Kein GROUP BY-Ausdruck
SQL> select einheit, max(cn) from test
2 group by Einheit;
E MAX(CN)
- ----------
A 1
B 1
C 0
SELECT * FROM test where (einheit, cn) in
(
select einheit, max(cn) maxcn from test
group by Einheit
);
ID E CN X Y
---------- - ---------- ---------- ----------
3 C 0 9,23222 32,232
4 A 1 51,3123 92,123
5 B 1 12,4512 3,45345
Nein, die Attribute, nach denen gruppiert wird, müssen in den GROUP BY Ausdruck:
SQL> SELECT ID, Einheit, Max(CN) FROM test group by Einheit;
SELECT ID, Einheit, Max(CN) FROM test group by Einheit
*
FEHLER in Zeile 1:
ORA-00979: Kein GROUP BY-Ausdruck