Heim > Datenbank > MySQL-Tutorial > Wie funktioniert die GROUP BY-Klausel von SQL mit und ohne Aggregatfunktionen?

Wie funktioniert die GROUP BY-Klausel von SQL mit und ohne Aggregatfunktionen?

Barbara Streisand
Freigeben: 2025-01-13 07:10:45
Original
616 Leute haben es durchsucht

How Does SQL's GROUP BY Clause Work with and Without Aggregate Functions?

SQLs GROUP BY-Klausel: Ein tiefer Einblick

Die SQL-Klausel GROUP BY ist ein leistungsstarkes Tool zum Gruppieren von Zeilen basierend auf angegebenen Spalten und ermöglicht aggregierte Berechnungen (wie SUM, COUNT, AVG) für gruppierte Daten. Lassen Sie uns sein Verhalten mit und ohne Aggregatfunktionen untersuchen.

GROUP BYOhne Aggregatfunktionen: Die Gefahr

Die Verwendung von GROUP BY ohne Aggregatfunktion führt zu einem Fehler. Betrachten Sie dieses Beispiel:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no</code>
Nach dem Login kopieren

Dies schlägt fehl, da GROUP BY erfordert, dass alle nicht aggregierten Spalten in der SELECT-Liste auch in der GROUP BY-Klausel enthalten sind. Der Platzhalter * wählt alle Spalten aus, wodurch die Abfrage mehrdeutig wird, da die Datenbank nicht bestimmen kann, welcher Wert für nicht gruppierte Spalten innerhalb jeder order_no-Gruppe zurückgegeben werden soll.

GROUP BYMit Aggregatfunktionen: Die Lösung

Das Problem wird bei Verwendung einer Aggregatfunktion behoben. Aggregatfunktionen wirken sich auf die gesamte Gruppe aus und ermöglichen so, dass die Abfrage aussagekräftige Ergebnisse liefert. Berechnen Sie beispielsweise den Gesamtpreis für jede Bestellung:

<code class="language-sql">SELECT SUM(order_price)
FROM order_details
GROUP BY order_no</code>
Nach dem Login kopieren

Diese Abfrage gibt erfolgreich die Summe von order_price für jedes eindeutige order_no zurück.

Aggregatfunktionen und gruppierte Daten: Verborgene Attribute enthüllen

Aggregatfunktionen bieten eine Möglichkeit, auf Attribute innerhalb jeder Gruppe zuzugreifen. Die Funktion SUM berechnet im vorherigen Beispiel die Summe für jede order_no-Gruppe. Dies demonstriert die Fähigkeit von Aggregatfunktionen, einen Drilldown in Gruppen durchzuführen und zusammengefasste Informationen abzurufen.

Standard-SQL-Konformität: Die GROUP BYRegel

Standard-SQL schreibt (im Gegensatz zum milderen Ansatz von MySQL) vor, dass alle nicht aggregierten Spalten in der SELECT-Liste in der GROUP BY-Klausel erscheinen müssen. Somit ist die folgende Abfrage gültig:

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no</code>
Nach dem Login kopieren

Dies ist gültig, weil order_no, die nicht aggregierte Spalte, in der GROUP BY-Klausel vorhanden ist. Das gleiche Prinzip gilt für Abfragen mit mehreren gruppierten Spalten und Aggregatfunktionen:

<code class="language-sql">SELECT order_no, order_price, MAX(order_item)
FROM order_details
GROUP BY order_no, order_price</code>
Nach dem Login kopieren

Diese Abfrage ist gültig, da sowohl order_no als auch order_price in der GROUP BY-Klausel enthalten sind.

Das obige ist der detaillierte Inhalt vonWie funktioniert die GROUP BY-Klausel von SQL mit und ohne Aggregatfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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