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.

Esercitati