SQL GROUP BY: So fassen Sie identische Werte in einer Gruppe zusammen

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-Befehl SELECT 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) von IONOS

Günstige und starke VPS für Webserver, Mailserver und eigene Anwendungen mit persönlichem Berater und 24/7 Support!

100 % SSD-Speicher
Bereit in 55 Sek.
SSL Zertifikat

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.