Wenn Sie Zeilen mit iden­ti­schen Werten in einer Gruppe zu­sam­men­fas­sen möchten, ist SQL GROUP BY die richtige Anweisung. Meistens wird sie in Kom­bi­na­ti­on mit Ag­gre­gats­funk­tio­nen verwendet.

Was ist SQL GROUP BY?

In der Struc­tu­red Query Language ist SQL GROUP BY eine Anweisung, die genutzt wird, um Zeilen mit iden­ti­schen Werten in einer Gruppe zu­sam­men­zu­fas­sen. Sie wird mit dem SQL-Befehl SELECT verwendet und folgt auf die Anweisung WHERE. Häufig nutzt man SQL GROUP BY in Kom­bi­na­ti­on mit Funk­tio­nen wie SQL AVG(), SQL COUNT(), MAX(), MIN() oder SUM(). Dies erlaubt es Ihnen, Be­rech­nun­gen an­zu­stel­len und die Er­geb­nis­se innerhalb Ihrer Tabelle ab­zu­bil­den. Ins­be­son­de­re wenn eine Rei­hen­fol­ge ermittelt oder Werte mit­ein­an­der in Ver­bin­dung gesetzt werden sollen, ist die Anweisung sehr hilfreich.

vServer / VPS
VPS un­schlag­bar günstig auf Dell En­ter­pri­se Servern
  • 1 Gbit/s, un­be­grenzt Traffic & mehr Cores
  • Min­des­tens 99,99% Ver­füg­bar­keit & ISO-zer­ti­fi­zier­te Re­chen­zen­tren
  • Aus­ge­zeich­ne­ter 24/7 Premium-Support mit per­sön­li­chem Berater

Syntax und Funk­ti­ons­wei­se

Die grund­sätz­li­che Syntax von SQL GROUP BY sieht aus wie folgt:

SELECT spalte1, spalte2, spalte3, …
FROM name_der_tabelle
GROUP BY spalte1, spalte2, spalte3, …;
sql

Deutlich ge­läu­fi­ger ist al­ler­dings die Aus­füh­rung mit einer WHERE-Klausel, durch die Sie bestimmte Be­din­gun­gen in­iti­ie­ren 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 Ver­wen­dung mit COUNT()

Um zu ver­an­schau­li­chen, wie Sie SQL GROUP BY nutzen können, erstellen wir eine einfache Tabelle namens „Kun­den­lis­te“. Diese enthält Spalten für eine Kun­den­num­mer, den Namen, den Standort und die gekauften Artikel:

Kun­den­num­mer 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 Kom­bi­na­ti­on mit der Funktion COUNT() nutzen, um auf­zu­lis­ten, aus welchen Städten wie viele Kunden und Kundinnen kommen. Hier der ent­spre­chen­de 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 Er­geb­nis­se als „Anzahl“ anzeigen zu lassen.

Die Anweisung in Ver­bin­dung mit SUM()

Im nächsten Beispiel verwenden wir SQL GROUP BY in Kom­bi­na­ti­on mit SUM(), um zu ermitteln und an­zu­zei­gen, 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 Kom­bi­na­ti­on 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 ent­spre­chen­de Code, für den wir SQL GROUP BY mit der Funktion MAX() und ORDER BY kom­bi­nie­ren, ist dieser:

SELECT Standort, MAX(Artikel) AS Meiste
FROM Kundenliste
GROUP BY Standort ORDER BY Meiste DESC;
sql

Und die ent­spre­chen­de Ausgabe:

Standort Meiste
München 22
Hamburg 15
Berlin 13

In Kom­bi­na­ti­on mit der Anweisung HAVING

Auch mit SQL HAVING können Sie SQL GROUP BY kom­bi­nie­ren. Im folgenden Beispiel nehmen wir jene Kundinnen und Kunden aus der Liste, deren Kun­den­num­mer kleiner ist als 1300. Die übrigen Personen sortieren wir nach der Anzahl ihrer be­stell­ten Artikel in auf­stei­gen­der 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 Kun­den­num­mer Wenigste
Hamburg 1377 9
Berlin 1427 13
München 1431 22

Al­ter­na­ti­ven zu SQL GROUP BY

Eine beliebte Al­ter­na­ti­ve zu SQL GROUP BY ist die Anweisung PARTITION BY. Der Un­ter­schied ist, dass bei dieser auch alle ur­sprüng­li­chen Werte bei­be­hal­ten und angezeigt werden. Dazu funk­tio­nie­ren viele der weiter oben erwähnten Ag­gre­gats­funk­tio­nen auch ohne SQL GROUP BY.

Tipp

Eine Datenbank genau nach Ihren Vor­stel­lun­gen: Mit SQL-Server-Hosting von IONOS haben Sie nicht nur die Wahl zwischen MSSQL, MySQL oder MariaDB, sondern pro­fi­tie­ren in jedem Fall von einer her­aus­ra­gen­den Per­for­mance, starken Si­cher­heits­fea­tures und per­sön­li­cher Beratung auf Augenhöhe.

Zum Hauptmenü