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.

Übe es