Heim >Datenbank >MySQL-Tutorial >Wie funktioniert die GROUP BY-Klausel von SQL ohne Aggregatfunktionen?
GROUP BY ohne Aggregatfunktionen verstehen
In SQL wird die GROUP BY-Anweisung verwendet, um Zeilen in einer Tabelle basierend auf angegebenen Spalten zu gruppieren. Wenn Sie GROUP BY ohne Aggregatfunktionen verwenden, ist es wichtig zu verstehen, wie es funktioniert und welche Bedingungen es erfordert.
Betrachten Sie das folgende Beispiel:
SELECT ename, sal FROM emp GROUP BY ename, sal;
Diese Abfrage gibt keine Zeilen zurück, weil sie verstößt gegen die Regeln von GROUP BY ohne Aggregatfunktionen:
In diesem Fall hat die SELECT-Liste zwei Spalten (ename, sal), die GROUP BY-Klausel jedoch drei (Ename, Sal, Sal). Um dies zu beheben, entfernen Sie eine Sal-Spalte aus der GROUP BY-Klausel:
SELECT ename, sal FROM emp GROUP BY ename;
Wenn Sie sal in die SELECT-Liste aufnehmen, Sie wird zu einer Nicht-GROUP BY-Spalte, da sie nicht in der GROUP BY-Klausel enthalten ist. Da es sich nicht um eine Aggregatfunktion handelt, löst sie den ORA-00979-Fehler aus.
Um dies zu korrigieren, muss entweder sal zur GROUP BY-Klausel hinzugefügt oder eine Aggregatfunktion darauf verwendet werden:
-- Add sal to the GROUP BY clause SELECT ename, MIN(sal), MAX(sal) FROM emp GROUP BY ename, sal; -- Use an aggregate function on sal SELECT ename, SUM(sal) FROM emp GROUP BY ename;
Begründung der Regeln
Die GROUP BY-Operation führt Zeilen mit identischen Werten in GROUP BY zusammen Spalten, wodurch eine einzelne Zeile für jeden eindeutigen Wertesatz entsteht. Das Einbeziehen von Nicht-GROUP BY-Spalten in die SELECT-Liste ohne Aggregatfunktionen führt zu Mehrdeutigkeiten, da unklar ist, wie ein repräsentativer Wert für jede Gruppe ausgewählt werden soll.
Zum Beispiel, wenn Sie eine Tabelle mit den Spalten „Name“ und „Alter“ haben und eine GRUPPE verwenden NACH Name, welches Alter soll im Ergebnis für jeden Namen angezeigt werden? Durch die Verwendung von Aggregatfunktionen wie MIN, MAX oder SUM geben Sie explizit an, wie mit solchen Spalten umgegangen werden soll.
Das obige ist der detaillierte Inhalt vonWie funktioniert die GROUP BY-Klausel von SQL ohne Aggregatfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!