STRING_AGG, FILTER e ROLLUP
Junte valores de um grupo em texto, conte por condição e adicione linhas de subtotal.
Sintaxe
STRING_AGG(column, separator [ORDER BY …])aggregate(…) FILTER (WHERE condition)GROUP BY ROLLUP (column1, column2)
- O MySQL chama STRING_AGG de GROUP_CONCAT; o SQL Server também usa STRING_AGG.
- ROLLUP adiciona um subtotal para cada coluna inicial e um total geral.
Exemplo
SELECT channel, COUNT(*) AS orders FROM orders GROUP BY ROLLUP (channel) ORDER BY channel;
Pedidos por canal, mais uma linha de total onde o canal é NULL.
Tabelas usadas: orders. Experimente em uma lição abaixo.
Erros comuns
- Em um resultado de ROLLUP, um NULL na coluna agrupada pode ser uma linha de subtotal ou um NULL real. GROUPING() os diferencia.