Wie lautet die richtige SQL Abfrage?

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

askanier  14.01.2023, 19:54

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

0
Slevi89  16.01.2023, 08:11
@askanier

Mein SQL Ausdruck funktioniert. Selbst getestet.

0

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

Woher ich das weiß:Berufserfahrung