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;
- spalte1: Die Spalte, nach der gruppiert wird.
- aggregatefunktion(spalte3): Eine berechnete Information (z. B. SUM(), AVG(), COUNT()) über die jeweiligen Gruppen.
- 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:
ID | Vorname | Nachname | Geschlecht | Körpergröße_cm | Geburtsort | Letzter_Wohnort | Beschreibung |
---|---|---|---|---|---|---|---|
1 | Albert | Einstein | 1 | 172 | Ulm | Princeton | Physiker |
2 | Marie | Curie | 0 | 160 | Warschau | Paris | Wissenschaftlerin |
3 | Mahatma | Gandhi | 1 | 165 | Porbandar | Neu-Delhi | Politiker |
4 | Rosa | Parks | 0 | 157 | Tuskegee | Detroit | Bürgerrechtlerin |
5 | Nelson | Mandela | 1 | 183 | Mvezo | Johannesburg | Politiker |
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
Plattform | Funktionen unterstützt | Bemerkungen |
---|---|---|
MariaDB | GROUP BY, Aggregate-Funktionen | Standard-SQL und JOINs |
MSSQL | GROUP BY, STRING_AGG | Standard-SQL und erweiterte Aggregate |
MySQL | GROUP BY | Wie MariaDB |
Oracle | GROUP BY, ROLLUP | Hierarchische Gruppierungen möglich |
SQLite | GROUP BY | Unterstü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.