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.
- 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, …;
sqlDeutlich 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, …;
sqlBeispiel 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;
sqlAls 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;
sqlAls 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;
sqlUnd 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;
sqlDadurch 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.
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.