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.

Practícalo