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
Freigeben: 2025-01-05 17:59:43
Original
840 Leute haben es durchsucht

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  |
+-------+------+------+
Nach dem Login kopieren

Beispiel 1:

SELECT EName, Sal
FROM EMP
GROUP BY EName, Sal
Nach dem Login kopieren

Ergebnis:

+------+------+
| EName | Sal  |
+------+------+
| King  | 5000  |
| Blake | 2850  |
| Clark | 2450  |
+------+------+
Nach dem Login kopieren

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
Nach dem Login kopieren

Ergebnis:

ORA-00979: not a GROUP BY expression
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

Ergebnis:

ORA-00979: not a GROUP BY expression
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

Ergebnis:

ORA-00979: not a GROUP BY expression
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

Ergebnis:

+-------+------+------+
| EmpNo | EName | Sal  |
+-------+------+------+
| 7839   | King  | 5000  |
| 7698   | Blake | 2850  |
| 7782   | Clark | 2450  |
+-------+------+------+
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage