Heim >Datenbank >MySQL-Tutorial >Warum gibt meine Oracle-GROUP-BY-Abfrage den Fehler „Kein GROUP-BY-Ausdruck' zurück?

Warum gibt meine Oracle-GROUP-BY-Abfrage den Fehler „Kein GROUP-BY-Ausdruck' zurück?

Linda Hamilton
Linda HamiltonOriginal
2025-01-05 17:59:43830Durchsuche

Why Does My Oracle GROUP BY Query Return a

GROUP BY ohne Aggregatfunktionen

Bei der Verwendung von GROUP BY ohne Aggregatfunktionen ist es wichtig zu verstehen, wie Oracle funktioniert, um zu vermeiden, dass auf Folgendes stößt Fehler „Kein GROUP BY-Ausdruck“.

GROUP BY gruppiert Zeilen mit identischen Werten für die angegebenen Spalten und erzeugt eine einzelne Ergebniszeile. Spalten, die nicht in einer Aggregatfunktion vorkommen, müssen jedoch in die GROUP BY-Klausel aufgenommen werden, um die eindeutige Kombination von Gruppierungswerten zu identifizieren.

Beachten Sie die folgende Tabelle:

EMP
+-------+------+------+
| EmpNo | EName | Sal  |
+-------+------+------+
| 7839   | King  | 5000  |
| 7698   | Blake | 2850  |
| 7782   | Clark | 2450  |
+-------+------+------+

Beispiel 1:

SELECT EName, Sal
FROM EMP
GROUP BY EName, Sal

Ergebnis:

+------+------+
| EName | Sal  |
+------+------+
| King  | 5000  |
| Blake | 2850  |
| Clark | 2450  |
+------+------+

Diese Abfrage gruppiert die Zeilen korrekt und gibt alle Zeilen seit den Gruppierungsspalten (EName und Sal ) Übereinstimmung.

Beispiel 2:

SELECT EName, Sal
FROM EMP
GROUP BY EName

Ergebnis:

ORA-00979: not a GROUP BY expression

Diese Abfrage schlägt fehl, weil Sal nicht in der GROUP BY-Klausel enthalten ist. Oracle weiß nicht, wie die mehreren Zeilen mit unterschiedlichen Sal-Werten für denselben EName aggregiert werden sollen.

Beispiel 3:

SELECT EName, Sal
FROM EMP
GROUP BY Sal

Ergebnis:

ORA-00979: not a GROUP BY expression

Diese Abfrage schlägt ebenfalls fehl, weil EName nicht in der GROUP BY-Klausel enthalten ist. Oracle muss wissen, welcher EName jedem eindeutigen Sal-Wert zugeordnet werden soll.

Beispiel 4:

SELECT EmpNo, EName, Sal
FROM EMP
GROUP BY Sal, EName

Ergebnis:

ORA-00979: not a GROUP BY expression

Diese Abfrage schlägt fehl, weil die Anzahl der ausgewählten Spalten (EmpNo, EName, Sal) die Anzahl der Spalten in der GROUP überschreitet BY-Klausel (Sal, EName). Oracle erfordert, dass die ausgewählten Spalten unter Berücksichtigung der eindeutigen Kombinationen Teil der Gruppierung sind.

Beispiel 5:

SELECT EmpNo, EName, Sal
FROM EMP
GROUP BY EmpNo, EName, Sal

Ergebnis:

+-------+------+------+
| EmpNo | EName | Sal  |
+-------+------+------+
| 7839   | King  | 5000  |
| 7698   | Blake | 2850  |
| 7782   | Clark | 2450  |
+-------+------+------+

Diese Abfrage ist erfolgreich, da alle ausgewählten Spalten in der GROUP BY-Klausel enthalten sind. Oracle berücksichtigt jede eindeutige Kombination aus EmpNo, EName und Sal, was zu drei unterschiedlichen Zeilen führt.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Oracle-GROUP-BY-Abfrage den Fehler „Kein GROUP-BY-Ausdruck' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn