0Pricing
SQL Interview Prep · Lektion

Nach mehreren Spalten und Ausdrücken gruppieren

Zusammengesetzte Gruppierungsschlüssel und die Gruppierung nach berechneten Werten

Nach mehreren Spalten und Ausdrücken gruppieren ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 3 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 Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Über einen einzelnen Gruppierungsschlüssel hinaus

In echten Berichten wird selten nach nur einer Spalte gruppiert. Interviewer steigern die Aufgabe von „Umsatz pro Region“ zu „Umsatz pro Region und Monat“, um zu sehen, ob Sie zusammengesetzte Gruppierungsschlüssel verstehen.

Die Regel lässt sich problemlos erweitern: Wenn Sie mehr Spalten in GROUP BY angeben, entsteht eine Zeile pro eindeutiger Kombination dieser Spalten.

Was mehrere Spalten bedeuten

Wenn Sie GROUP BY region, product schreiben, besteht der Gruppenschlüssel aus dem Paar (region, product). Jedes eindeutige Paar wird zu einer Ausgabezeile.

  • 5 Regionen und 4 Produkte ergeben bis zu 20 Gruppen.
  • Kombinationen, die nie vorkommen, erzeugen überhaupt keine Zeile.
  • Die Reihenfolge der Spalten in GROUP BY ändert die Ergebnismenge nicht, sondern manchmal nur den Ausführungsplan.
SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY region, product;

Die SELECT-Regel gilt weiterhin

Die zentrale Einschränkung bleibt bestehen. Jede nicht aggregierte SELECT-Spalte muss in GROUP BY erscheinen. Bei zusammengesetzten Schlüsseln listen Sie sie einfach alle auf.

Unter Interviewdruck eine Spalte in einer Gruppe mit mehreren Schlüsseln zu vergessen, ist der häufigste Fehler. Stimmen Sie die GROUP-BY-Liste exakt auf die nicht aggregierten SELECT-Spalten ab.

-- Both region and product appear in GROUP BY
SELECT region, product,
       COUNT(*) AS orders,
       AVG(amount) AS avg_amount
FROM sales
GROUP BY region, product;

Gruppieren nach einem Ausdruck

Sie können nach einem berechneten Wert gruppieren, nicht nur nach einer Rohspalte. Häufig sollen Umsätze nach Monat gruppiert werden, wofür Sie ein gekürztes oder extrahiertes Datum gruppieren.

Der Ausdruck in GROUP BY muss mit dem Ausdruck in SELECT übereinstimmen. Die Engine gruppiert nach dem berechneten Ergebnis.

SELECT DATE_TRUNC('month', order_date) AS month,
       SUM(amount) AS monthly_total
FROM sales
GROUP BY DATE_TRUNC('month', order_date);

Gruppieren mit CASE-Kategorien

Ein leistungsfähiges Muster ist, mit einem CASE-Ausdruck benutzerdefinierte Kategorien zu erstellen. So erzeugen Sie Zusammenfassungen für „kleine / mittlere / große Bestellung“, ohne eine Nachschlagetabelle zu benötigen.

Interviewer mögen dieses Beispiel, weil es gleichzeitig die CASE-Logik und die Gruppierung nach einem abgeleiteten Wert prüft.

SELECT CASE
         WHEN amount < 50  THEN 'small'
         WHEN amount < 200 THEN 'medium'
         ELSE 'large'
       END AS bucket,
       COUNT(*) AS orders
FROM sales
GROUP BY CASE
         WHEN amount < 50  THEN 'small'
         WHEN amount < 200 THEN 'medium'
         ELSE 'large'
       END;

Gruppieren nach Spaltenposition

Viele Dialekte erlauben die Gruppierung nach der Ordnungsposition: GROUP BY 1, 2 bedeutet die erste und zweite SELECT-Spalte. Das ist kompakt, aber fragil.

Interviewer akzeptieren diese Schreibweise möglicherweise, weisen Sie aber auf das Risiko hin: Eine neue Reihenfolge der SELECT-Liste ändert die Gruppierung unbemerkt. Bevorzugen Sie in produktivem Code explizite Ausdrücke.

-- 1 = month expression, 2 = region
SELECT DATE_TRUNC('month', order_date) AS month,
       region, SUM(amount)
FROM sales
GROUP BY 1, 2;

NULL-Werte bilden eine eigene Gruppe

Eine Falle bei der Behandlung von NULL in Gruppierungen: Wenn eine Gruppierungsspalte NULL-Werte enthält, werden alle NULL-Zeilen zu einer einzigen Gruppe zusammengefasst.

Das unterscheidet sich von Gleichheitsvergleichen, bei denen NULL niemals gleich NULL ist. Für Gruppierungen werden NULL-Werte als „gleich“ behandelt und bilden eine Kategorie. Interviewer lieben diesen scheinbaren Widerspruch.

-- Rows with region IS NULL all land in one group
SELECT region, COUNT(*) AS orders
FROM sales
GROUP BY region;

GROUPING SETS für mehrere Ebenen

Um mehrere Gruppierungsstufen in einer Abfrage zu erzeugen, verwenden Sie GROUPING SETS. Dabei wird jede aufgeführte Schlüsselmenge berechnet und die Ergebnisse werden zusammengeführt.

Das signalisiert mittlere bis fortgeschrittene Kenntnisse: Statt drei separater Abfragen mit UNION liefert eine Anweisung gleichzeitig Summen pro Region, pro Produkt und eine Gesamtsumme.

SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS ((region), (product), ());

ROLLUP und CUBE

ROLLUP und CUBE sind Kurzschreibweisen für häufig verwendete Gruppierungsmengen. ROLLUP(region, product) liefert Region+Produkt, Zwischensummen pro Region und eine Gesamtsumme – ideal für hierarchische Berichte.

CUBE erzeugt jede Kombination der angegebenen Spalten. Wer diese Konstrukte kennt, hebt sich als Bewerber mit Erfahrung im Erstellen echter Berichtsabfragen hervor.

SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY ROLLUP (region, product);

Durchgearbeitetes Beispiel: Monatsbericht nach Region

Führen Sie die Konzepte zusammen: Gesamt- und Durchschnittsumsatz pro Region und Monat, ausschließlich für abgeschlossene Bestellungen und zur besseren Lesbarkeit sortiert.

WHERE schränkt zuerst die Zeilen ein, der zusammengesetzte Schlüssel gruppiert nach Region und dem Monatsausdruck, und ORDER BY ordnet die Ausgabe. Das ist eine typische vollständige Antwort in einem Analysteninterview.

SELECT region,
       DATE_TRUNC('month', order_date) AS month,
       SUM(amount) AS total,
       AVG(amount) AS avg_order
FROM sales
WHERE status = 'completed'
GROUP BY region, DATE_TRUNC('month', order_date)
ORDER BY region, month;

So leiten Sie die Antwort laut her

Geben Sie bei jeder Frage zu zusammengesetzten Gruppierungen den Schlüssel ausdrücklich an: „Ich gruppiere nach der Kombination aus X und Y und erhalte daher eine Zeile pro eindeutigem (X, Y)-Paar.“

Bestätigen Sie anschließend, dass jede nicht aggregierte SELECT-Spalte in diesem Schlüssel enthalten ist, und erwähnen Sie, dass NULL-Werte zu einer Gruppe zusammengefasst werden. Diese systematische Herleitung wird in Interviews auf mittlerem Niveau honoriert.

Kurzer Test

Leiten Sie die Bedeutung zusammengesetzter Gruppierungsschlüssel her.

Zusammenfassung

Zusammengesetzte Schlüssel: Mehrere Spalten erzeugen eine Zeile pro eindeutiger Kombination; jede nicht aggregierte SELECT-Spalte muss im Schlüssel enthalten sein.

  • Sie können nach Ausdrücken, CASE-Kategorien oder Ordnungspositionen gruppieren (Positionen sind fragil).
  • NULL-Werte in einer Gruppierungsspalte werden zu einer einzigen Gruppe zusammengefasst.
  • GROUPING SETS, ROLLUP und CUBE erzeugen mehrere Gruppierungsstufen in einer Abfrage.
  • Verschieben Sie Zeilenfilter vor der Gruppierung nach WHERE.

Häufig gestellte Fragen

Ist die Lektion „Nach mehreren Spalten und Ausdrücken gruppieren“ kostenlos?

Ja — der vollständige Text von „Nach mehreren Spalten und Ausdrücken gruppieren“ 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 Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Nach mehreren Spalten und Ausdrücken gruppieren“?

Zusammengesetzte Gruppierungsschlüssel und die Gruppierung nach berechneten Werten Du übst SQL Interview Prep 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 Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. SQL Interview Prep 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 3 von 4.

Wie lange dauert die Lektion „Nach mehreren Spalten und Ausdrücken gruppieren“?

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 Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede SQL Interview Prep-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

  1. Die GROUP-BY-Regel für SELECT-Spalten
  2. HAVING oder WHERE
  3. Nach mehreren Spalten und Ausdrücken gruppieren
  4. Gruppen zählen und filtern
← Zurück zu SQL Interview Prep