Wenn Sie Zeilen mit identischen Werten in einer Gruppe zusammenfassen möchten, ist SQL GROUP BY die richtige Anweisung. Meistens wird sie in Kombination mit Aggregatsfunktionen verwendet.
Was ist SQL GROUP BY?
In der Structured Query Language ist SQL GROUP BY eine Anweisung, die genutzt wird, um Zeilen mit identischen Werten in einer Gruppe zusammenzufassen. Sie wird mit dem SQL-BefehlSELECT verwendet und folgt auf die Anweisung WHERE. Häufig nutzt man SQL GROUP BY in Kombination mit Funktionen wie SQL AVG(), SQL COUNT(), MAX(), MIN() oder SUM(). Dies erlaubt es Ihnen, Berechnungen anzustellen und die Ergebnisse innerhalb Ihrer Tabelle abzubilden. Insbesondere wenn eine Reihenfolge ermittelt oder Werte miteinander in Verbindung gesetzt werden sollen, ist die Anweisung sehr hilfreich.
vServer / VPS
Vollständig virtualisiert mit Root-Zugriff
Bis zu 1 Gbit/s Bandbreite & unbegrenzt Traffic
Schneller NVMe-SSD-Speicher
Kostenlose Plesk Web Host Edition
Syntax und Funktionsweise
Die grundsätzliche Syntax von SQL GROUP BY sieht aus wie folgt:
SELECT spalte1, spalte2, spalte3, …
FROM name_der_tabelle
GROUP BY spalte1, spalte2, spalte3, …;
sql
Deutlich geläufiger ist allerdings die Ausführung mit einer WHERE-Klausel, durch die Sie bestimmte Bedingungen initiieren können. Diese Version sieht so aus:
SELECT spalte1, spalte2, spalte3, …
FROM name_der_tabelle
WHERE bedingung
GROUP BY spalte1, spalte2, spalte3, …
ORDER BY spalte1, spalte2, spalte3, …;
sql
Beispiel für die Verwendung mit COUNT()
Um zu veranschaulichen, wie Sie SQL GROUP BY nutzen können, erstellen wir eine einfache Tabelle namens „Kundenliste“. Diese enthält Spalten für eine Kundennummer, den Namen, den Standort und die gekauften Artikel:
Kundennummer
Name
Standort
Artikel
1427
Schmidt
Berlin
13
1377
Schulz
Hamburg
9
1212
Peters
Hamburg
15
1431
Müller
München
22
1118
Becker
Berlin
10
Nun können wir SQL GROUP BY zum Beispiel in Kombination mit der Funktion COUNT() nutzen, um aufzulisten, aus welchen Städten wie viele Kunden und Kundinnen kommen. Hier der entsprechende Code:
SELECT Standort, COUNT(*) AS Anzahl
FROM Kundenliste
GROUP BY Standort;
sql
Als Ergebnis erhalten wir diese neue Tabelle:
Standort
Anzahl
München
1
Berlin
2 ]
Hamburg
2
Hierbei nutzen wir die SQL-Aliases, um die Ergebnisse als „Anzahl“ anzeigen zu lassen.
Die Anweisung in Verbindung mit SUM()
Im nächsten Beispiel verwenden wir SQL GROUP BY in Kombination mit SUM(), um zu ermitteln und anzuzeigen, wie viele Artikel aus Hamburg bestellt wurden. Dafür nutzen wir diesen Code:
SELECT Standort, SUM(Artikel) AS Gesamt
FROM Kundenliste
WHERE Standort = 'Hamburg'
GROUP BY Standort;
sql
Als Ergebnis erhalten wir:
Standort
Gesamt
Hamburg
24
Anwendung mit ORDER BY
Auch eine Kombination mit ORDER BY ist möglich. Hierbei sortieren wir für unsere Tabelle nach der höchsten Anzahl für bestellte Artikel pro Kunde bzw. Kundin und pro Stadt. Wir beginnen bei dem Standort, in dem ein Kunde oder eine Kundin die meisten Artikel erworben hat. Der entsprechende Code, für den wir SQL GROUP BY mit der Funktion MAX() und ORDER BY kombinieren, ist dieser:
SELECT Standort, MAX(Artikel) AS Meiste
FROM Kundenliste
GROUP BY Standort ORDER BY Meiste DESC;
sql
Und die entsprechende Ausgabe:
Standort
Meiste
München
22
Hamburg
15
Berlin
13
In Kombination mit der Anweisung HAVING
Auch mit SQL HAVING können Sie SQL GROUP BY kombinieren. Im folgenden Beispiel nehmen wir jene Kundinnen und Kunden aus der Liste, deren Kundennummer kleiner ist als 1300. Die übrigen Personen sortieren wir nach der Anzahl ihrer bestellten Artikel in aufsteigender Form. So sieht der Code aus:
SELECT Standort, Kundennummer, MIN(Artikel) AS Wenigste
FROM Kundenliste
GROUP BY Standort, Kundennummer HAVING Kundennummer > 1300;
sql
Dadurch erhalten wir diese Tabelle als neue Ausgabe:
Standort
Kundennummer
Wenigste
Hamburg
1377
9
Berlin
1427
13
München
1431
22
Alternativen zu SQL GROUP BY
Eine beliebte Alternative zu SQL GROUP BY ist die Anweisung PARTITION BY. Der Unterschied ist, dass bei dieser auch alle ursprünglichen Werte beibehalten und angezeigt werden. Dazu funktionieren viele der weiter oben erwähnten Aggregatsfunktionen auch ohne SQL GROUP BY.
Tipp
Eine Datenbank genau nach Ihren Vorstellungen: Mit SQL-Server-Hosting von IONOS haben Sie nicht nur die Wahl zwischen MSSQL, MySQL oder MariaDB, sondern profitieren in jedem Fall von einer herausragenden Performance, starken Sicherheitsfeatures und persönlicher Beratung auf Augenhöhe.
War dieser Artikel hilfreich?
Preisgünstiges Cloud ComputingSparen Sie 50 % Ihrer Computing-Kosten
IONOS ist als neuer Preis-Leistungs-Führer im Cloud Computing durch Cloud Mercato im Juli 2024 ausgezeichnet worden.