STRING_AGG, FILTER e ROLLUP
Unisce i valori di un gruppo in un testo, conta in base a una condizione e aggiunge righe di subtotale.
Sintassi
STRING_AGG(column, separator [ORDER BY …])aggregate(…) FILTER (WHERE condition)GROUP BY ROLLUP (column1, column2)
- MySQL chiama STRING_AGG GROUP_CONCAT; anche SQL Server usa STRING_AGG.
- ROLLUP aggiunge un subtotale per ogni colonna iniziale e un totale generale.
Esempio
SELECT channel, COUNT(*) AS orders FROM orders GROUP BY ROLLUP (channel) ORDER BY channel;
Ordini per canale, più una riga di totale dove channel è NULL.
Tabelle usate: orders. Provalo in una lezione qui sotto.
Errori comuni
- In un risultato di ROLLUP, un NULL nella colonna raggruppata può essere una riga di subtotale o un NULL vero. GROUPING() le distingue.