0 Tage Serie
sql / intermediate
Snippet

Daten-Pivoting durch bedingte Aggregation mit CASE

Die Kombination von Aggregatfunktionen mit CASE-Ausdrücken ermöglicht bedingtes Zählen und Pivoting in einem einzigen Tabellendurchlauf. Dies vermeidet mehrere separate Joins oder Unterabfragen.

snippet.sql
sql
1
2
3
4
5
6
SELECT
department_id,
SUM(CASE WHEN status = 'ACTIVE' THEN 1 ELSE 0 END) AS active_count,
SUM(CASE WHEN status = 'ON_LEAVE' THEN 1 ELSE 0 END) AS leave_count
FROM employees
GROUP BY department_id;
Erklärung
1
SUM(CASE WHEN status = 'ACTIVE' THEN 1 ELSE 0 END) AS active_count,
Wandelt Statusübereinstimmungen vor dem Aufsummieren bedingt in 1 und Nicht-Übereinstimmungen in 0 um.
2
SUM(CASE WHEN status = 'ON_LEAVE' THEN 1 ELSE 0 END) AS leave_count
Aggregiert beurlaubte Mitarbeiter in einer separaten Spalte innerhalb desselben Abfragedurchlaufs.
3
GROUP BY department_id;
Gruppiert die Ausgabezeilen nach Abteilung, sodass jede Zeile eine Abteilung repräsentiert.