STRING_AGG, FILTER y ROLLUP
Une los valores de cada grupo en un texto, cuenta según una condición y añade filas de subtotales.
Sintaxis
STRING_AGG(column, separator [ORDER BY …])aggregate(…) FILTER (WHERE condition)GROUP BY ROLLUP (column1, column2)
- MySQL llama GROUP_CONCAT a STRING_AGG; SQL Server también usa STRING_AGG.
- ROLLUP añade un subtotal por cada columna inicial y un total general.
Ejemplo
SELECT channel, COUNT(*) AS orders FROM orders GROUP BY ROLLUP (channel) ORDER BY channel;
Pedidos por canal, más una fila de total donde channel es NULL.
Tablas usadas: orders. Pruébalo en una lección de abajo.
Errores comunes
- En un resultado de ROLLUP, un NULL en la columna agrupada puede ser una fila de subtotal o un NULL real. GROUPING() permite distinguirlos.