Ich versuche, den Benutzer in der Datenbank zu erhalten, der das größte Segment in der Datenbank besitzt. Dazu versuche ich:Oracle SQL - Gruppieren mit ROWNUM in Having-Klausel?
SELECT owner, MAX(bytes)
FROM SYS.DBA_SEGMENTS
GROUP BY owner
HAVING ROWNUM <= 1;
Dies jedoch zurück "not a GROUP BY expression"
. Warum kann ich nicht nur die erste Zeile auswählen? Wie kann ich diese Abfrage schreiben? Vielen Dank!
'ROWNUM' auf einzelne Zeilen zugeordnet ist aus der Zeilenquelle (in diesem Fall die Basistabelle 'DBA_SEGMENTS'). 'HAVING' bezieht sich auf Eigenschaften von Gruppen, die durch' GROUP BY' erstellt wurden, nicht auf einzelne Zeilen. Sie können 'ROWNUM' nicht in' HAVING' verwenden, genauso wenig wie Sie 'BYTES' oder einen anderen Ausdruck verwenden können, der unterschiedliche Werte für Zeilen innerhalb einer einzelnen Gruppe haben kann. Genau was die Fehlermeldung sagt. – mathguy