capypad
0 Tage Serie
sql / expert
Snippet

Bedingte Aggregation für dynamische Berichte

Bedingte Aggregation verwendet CASE-Anweisungen innerhalb von Aggregatfunktionen, um Daten zu pivotieren oder Multi-Kategorie-Zählungen in einem einzigen Durchlauf durchzuführen, was die Performance gegenüber mehreren Unterabfragen deutlich steigert.

snippet.sql
sql
1
2
3
4
5
6
7
SELECT
department_id,
COUNT(CASE WHEN salary < 50000 THEN 1 END) AS low_tier,
COUNT(CASE WHEN salary BETWEEN 50000 AND 100000 THEN 1 END) AS mid_tier,
COUNT(CASE WHEN salary > 100000 THEN 1 END) AS high_tier
FROM employees
GROUP BY department_id;
Erklärung
1
COUNT(CASE WHEN salary < 50000 THEN 1 END)
Der CASE-Ausdruck gibt 1 für bestimmte Zeilen zurück, die COUNT dann zählt. NULL-Werte werden ignoriert.
2
GROUP BY department_id
Organisiert die resultierenden Kennzahlen nach der angegebenen Dimension.