Grundlegendes zur GROUP BY-Klausel und den Aggregatfunktionen von SQL
Die Verwendung der GROUP BY
-Klausel von SQL führt oft zu Verwirrung darüber, welche Attribute nach der Gruppierung zugänglich sind. Lassen Sie uns Folgendes klären:
GROUP BY
und nicht aggregierte Spalten
Der Versuch, nach der Gruppierung auf nicht aggregierte Spalten zuzugreifen, führt zu einem Fehler „Kein GROUP BY-Ausdruck“. Dies liegt daran, dass jede Gruppe möglicherweise mehrere Zeilen enthält und die Werte in nicht aggregierten Spalten in diesen Zeilen unterschiedlich sind.
Aggregatfunktionen: Ein tieferer Blick
Umgekehrt können Aggregatfunktionen (wie SUM
, MAX
, AVG
usw.) auch nach Anwendung von GROUP BY
auf zugrunde liegende Spalten innerhalb jeder Gruppe zugreifen. Sie berechnen einen einzigen Gesamtwert für die gesamte Gruppe.
Beispiel:
Bedenken Sie diese Abfrage:
<code class="language-sql">SELECT * FROM order_details GROUP BY order_no;</code>
Diese Abfrage schlägt fehl, da versucht wird, alle Spalten auszuwählen, ohne Aggregatfunktionen für nicht aggregierte Spalten wie order_price
zu verwenden.
Dies ist jedoch eine gültige Abfrage:
<code class="language-sql">SELECT SUM(order_price) FROM order_details GROUP BY order_no;</code>
Hier verarbeitet SUM
jede Gruppe und summiert die order_price
-Werte, um einen Gesamtpreis für jede order_no
zu erhalten.
Einschließlich nicht aggregierter Spalten in GROUP BY
Um nach der Gruppierung auf nicht aggregierte Spalten zuzugreifen, fügen Sie diese in die GROUP BY
-Klausel ein:
<code class="language-sql">SELECT order_no, SUM(order_price) FROM order_details GROUP BY order_no;</code>
Dadurch werden alle order_no
zusammen mit ihrer Gesamtsumme order_price
korrekt abgerufen.
Das obige ist der detaillierte Inhalt vonWie kann ich Fehler vermeiden, dass es sich nicht um einen GROUP BY-Ausdruck handelt, wenn ich Aggregatfunktionen in SQL verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!