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
SELECTdepartment_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_countFROM employeesGROUP 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.