SQL-Befehl: mit „GROUP BY“ Daten effizient gruppieren und analysieren

er SQL-Befehl GROUP BY ist entscheidend, wenn man eine bestimmte Art von Analyse auf Daten durchführen möchte, indem man Datensätze auf der Grundlage von gemeinsamen Werten in einer oder mehreren Spalten gruppiert. Mit ihm kannst du Statistiken, wie Summen, Durchschnittswerte oder Zählungen, für jede Gruppe berechnen lassen.

Dieser Artikel erklärt leicht verständlich, wie du GROUP BY verwenden kannst, stellt viele Beispiele vor und zeigt, wie du es auf verschiedenen Datenbankplattformen einsetzen kannst. Für die Beispiele verwenden wir die Tabelle „Personen“ aus der Datenbank „Datenbank“. Diese enthält Informationen über historische Persönlichkeiten.


Was macht der GROUP BY-Befehl?

Der GROUP BY-Befehl wird genutzt, um Datensätze zu gruppieren, die in einer oder mehreren Spalten den gleichen Wert haben. Anschließend kannst du auf jede Gruppe Aggregate (z. B. Zählungen, Summen, Durchschnittswerte) anwenden. Aggregate sind Funktionen, die auf eine Gruppe von Daten angewendet werden.

Grundlegender Aufbau einer GROUP BY-Abfrage

Die allgemeine Form des GROUP BY-Befehls sieht so aus:

SELECT spalte1, spalte2, aggregatefunktion(spalte3)
FROM tabelle
GROUP BY spalte1;
  1. spalte1: Die Spalte, nach der gruppiert wird.
  2. aggregatefunktion(spalte3): Eine berechnete Information (z. B. SUM(), AVG(), COUNT()) über die jeweiligen Gruppen.
  3. GROUP BY spalte1: Anweisung, die Datensätze nach den Werten in spalte1 zu gruppieren.

Die „Personen“-Tabelle als Grundlage

Unsere Tabelle „Personen“ enthält folgende Informationen:

IDVornameNachnameGeschlechtKörpergröße_cmGeburtsortLetzter_WohnortBeschreibung
1AlbertEinstein1172UlmPrincetonPhysiker
2MarieCurie0160WarschauParisWissenschaftlerin
3MahatmaGandhi1165PorbandarNeu-DelhiPolitiker
4RosaParks0157TuskegeeDetroitBürgerrechtlerin
5NelsonMandela1183MvezoJohannesburgPolitiker

Einfache Beispiele für GROUP BY

Beispiel 1: Anzahl der Einträge pro Geschlecht

Hier gruppieren wir die Personen anhand ihrer Geschlechtsangabe und zählen, wie viele Personen in jeder Kategorie (0 = weiblich, 1 = männlich) vorkommen.

SELECT Geschlecht, COUNT(*) AS Anzahl
FROM Personen
GROUP BY Geschlecht;

Ergebnis: | Geschlecht | Anzahl | |————|——–| | 1 | 3 | | 0 | 2 |


Beispiel 2: Durchschnittliche Körpergröße pro Geschlecht

Wenn wir die durchschnittliche Körpergröße getrennt nach Männern und Frauen berechnen möchten, sieht die Abfrage so aus:

SELECT Geschlecht, AVG(Körpergröße_cm) AS Durchschnittliche_Körpergröße
FROM Personen
GROUP BY Geschlecht;

Ergebnis: | Geschlecht | Durchschnittliche_Körpergröße | |————|——————————-| | 1 | 173.33 | | 0 | 158.5 |


Beispiel 3: Daten gruppieren und aufbauen – Geburtsort

Nehmen wir an, du möchtest sehen, wie viele Personen in jedem Geburtsort verzeichnet sind. Die folgende Abfrage gruppiert die Personen basierend auf ihrem Geburtsort und zählt, wie viele jeweils dort geboren wurden.

SELECT Geburtsort, COUNT(*) AS Anzahl_Personen
FROM Personen
GROUP BY Geburtsort;

Ergebnis: | Geburtsort | Anzahl_Personen | |————|—————–| | Ulm | 1 | | Warschau | 1 | | Porbandar | 1 | | Tuskegee | 1 | | Mvezo | 1 |


Fortgeschrittene Beispiele für GROUP BY

Beispiel 4: Mehrfache Gruppierung

Wenn du zwei Spalten kombinieren möchtest, um spezifischere Gruppen zu erstellen, fügst du die zusätzlichen Spalten in die GROUP BY-Klausel ein. Zum Beispiel:

SELECT Geschlecht, Geburtsort, COUNT(*) AS Anzahl_Personen
FROM Personen
GROUP BY Geschlecht, Geburtsort;

Ergebnis: | Geschlecht | Geburtsort | Anzahl_Personen | |————|————–|—————–| | 1 | Ulm | 1 | | 0 | Warschau | 1 | | 1 | Porbandar | 1 | | 0 | Tuskegee | 1 | | 1 | Mvezo | 1 |

Hier wird nach „Geschlecht“ und „Geburtsort“ gruppiert.


Beispiel 5: Filtern von Gruppen mit HAVING

Das HAVING-Schlüsselwort wird verwendet, um Gruppenergebnisse weiter zu filtern. Angenommen, du möchtest nur Geschlechter anzeigen, für die mehr als eine Person existiert:

SELECT Geschlecht, COUNT(*) AS Anzahl
FROM Personen
GROUP BY Geschlecht
HAVING COUNT(*) > 1;

Ergebnis: | Geschlecht | Anzahl | |————|——–| | 1 | 3 |

Zusammenfassung der Plattform-Kompatibilität

PlattformFunktionen unterstütztBemerkungen
MariaDBGROUP BY, Aggregate-FunktionenStandard-SQL und JOINs
MSSQLGROUP BY, STRING_AGGStandard-SQL und erweiterte Aggregate
MySQLGROUP BYWie MariaDB
OracleGROUP BY, ROLLUPHierarchische Gruppierungen möglich
SQLiteGROUP BYUnterstützt einfache Gruppierungen

Fazit

Der GROUP BY-Befehl ist ein unverzichtbares Werkzeug zur Analyse von Daten in SQL. Mit ihm kannst du Daten gruppieren und wertvolle Erkenntnisse gewinnen. Dank des SQL-Standards funktioniert der Befehl in den meisten relationalen Datenbanksystemen einheitlich. Achte darauf, wenn nötig, HAVING zu verwenden, um Gruppenergebnisse weiter zu filtern.