GROUP BY mit einer oder mehreren Spalten
Gruppieren Sie Zeilen nach einer oder mehreren Spalten, um Zwischensummen und Aufschlüsselungen nach Kategorien zu erzeugen, und lesen Sie GROUP BY-Abfragepläne.
GROUP BY mit einer oder mehreren Spalten ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was GROUP BY bewirkt
GROUP BY teilt Zeilen anhand eines oder mehrerer Spaltenwerte in Gruppen auf und wendet anschließend pro Gruppe Aggregatfunktionen an.
Gruppierung nach einer Spalte
Gesamtzahl der Bestellungen pro Benutzer:
SELECT user_id, COUNT(*) AS order_count, SUM(total) AS revenue
FROM orders
GROUP BY user_id
ORDER BY revenue DESC;Gruppierung nach mehreren Spalten
Untergruppen nach Kategorie und Land:
SELECT country, category, SUM(total) AS revenue
FROM orders o
JOIN products p ON p.id = o.product_id
JOIN users u ON u.id = o.user_id
GROUP BY country, category
ORDER BY country, revenue DESC;Jede SELECT-Spalte muss gruppiert oder aggregiert werden
Regel des Standard-SQL:
-- WRONG — email is neither grouped nor aggregated:
SELECT user_id, email, COUNT(*)
FROM orders
GROUP BY user_id; -- ERROR
-- RIGHT — group by both, or use an aggregate:
SELECT user_id, MAX(email) AS email, COUNT(*)
FROM orders
GROUP BY user_id;GROUP BY nach Ausdruck
Gruppieren Sie nach dem Ergebnis eines Ausdrucks (z. B. einem Monatsintervall):
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY date_trunc('month', created_at)
ORDER BY month;GROUP BY nach Position oder Alias
Sie können nach der Position oder dem Alias einer SELECT-Liste gruppieren (PostgreSQL):
SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
GROUP BY month -- alias
ORDER BY 1; -- positionGrouping Sets, ROLLUP, CUBE
Berechnen Sie mehrere Gruppierungen in einer Abfrage – ideal für Zwischensummen:
SELECT country, category, SUM(total)
FROM orders o JOIN ...
GROUP BY ROLLUP (country, category);
-- Returns: per (country, category), per country, grand totalLeere Gruppen gibt es nicht
GROUP BY gibt nur Gruppen zurück, die mindestens eine Zeile enthalten. Wenn Sie jede Kategorie einschließlich der Kategorien mit null Bestellungen benötigen, führen Sie einen LEFT JOIN von der Stammliste aus und aggregieren Sie anschließend.
GROUP BY und Indizes
Der Abfrageplaner verwendet möglicherweise eine Hash-Aggregation (erstellt eine Hashtabelle der Gruppen) oder eine Sortier- und Gruppierungsstrategie. Indizes für die Gruppierungsspalte können den zweiten Ansatz beschleunigen.
Fensterfunktionen vs. GROUP BY
GROUP BY fasst Zeilen zusammen. Fensterfunktionen fügen Aggregatspalten hinzu und behalten dabei jede Zeile bei. Wählen Sie das passende Werkzeug – behandelt in Window Functions Deep Dive.
Aliase in HAVING vs. WHERE
Logische Reihenfolge: FROM → WHERE → GROUP BY → HAVING → SELECT. WHERE kann Aggregate nicht sehen, HAVING dagegen schon.
Zusammenfassung
GROUP BY ist das wichtigste Werkzeug für Berichte.
- Jede SELECT-Spalte muss gruppiert oder aggregiert werden
- Gruppieren Sie nach Spalten, Ausdrücken oder Aliasen
- Verwenden Sie ROLLUP/CUBE/GROUPING SETS für Kreuztabellen
Kurze Verständnisprüfung
Darf die SELECT-Liste in einer Abfrage mit GROUP BY country eine Spalte city enthalten, die weder aggregiert noch gruppiert wird?
Häufig gestellte Fragen
Ist die Lektion „GROUP BY mit einer oder mehreren Spalten“ kostenlos?
Ja — der vollständige Text von „GROUP BY mit einer oder mehreren Spalten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „GROUP BY mit einer oder mehreren Spalten“?
Gruppieren Sie Zeilen nach einer oder mehreren Spalten, um Zwischensummen und Aufschlüsselungen nach Kategorien zu erzeugen, und lesen Sie GROUP BY-Abfragepläne. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „GROUP BY mit einer oder mehreren Spalten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- COUNT, SUM, AVG, MIN, MAX
- GROUP BY mit einer oder mehreren Spalten
- HAVING vs. WHERE
- Häufige Fehler: NULL-Werte in Aggregaten