STRING_AGG, FILTER und ROLLUP
Verbindet Gruppenwerte zu einem Text, zählt nach Bedingung und fügt Zwischensummen-Zeilen hinzu.
Syntax
STRING_AGG(column, separator [ORDER BY …])aggregate(…) FILTER (WHERE condition)GROUP BY ROLLUP (column1, column2)
- MySQL nennt STRING_AGG GROUP_CONCAT; SQL Server verwendet ebenfalls STRING_AGG.
- ROLLUP fügt für jede führende Spalte eine Zwischensumme und zusätzlich eine Gesamtsumme hinzu.
Beispiel
SELECT channel, COUNT(*) AS orders FROM orders GROUP BY ROLLUP (channel) ORDER BY channel;
Bestellungen pro Kanal plus eine Summenzeile, in der der Kanal NULL ist.
Verwendete Tabellen: orders. Probiere es unten in einer Lektion aus.
Häufige Fehler
- Bei einem ROLLUP-Ergebnis kann ein NULL in der gruppierten Spalte eine Zwischensummen-Zeile oder ein echtes NULL sein. GROUPING() unterscheidet beides.