STRING_AGG, FILTER i ROLLUP

Połącz wartości grupy w tekst, licz według warunku i dodaj wiersze sum częściowych.

Składnia

STRING_AGG(column, separator [ORDER BY …])
aggregate(…) FILTER (WHERE condition)
GROUP BY ROLLUP (column1, column2)
  • MySQL nazywa STRING_AGG funkcją GROUP_CONCAT; SQL Server również używa STRING_AGG.
  • ROLLUP dodaje sumę częściową dla każdej kolumny wiodącej oraz sumę całkowitą.

Przykład

SELECT channel, COUNT(*) AS orders FROM orders GROUP BY ROLLUP (channel) ORDER BY channel;

Zamówienia według kanału plus wiersz sumy, gdzie kanał to NULL.

Użyte tabele: orders. Wypróbuj to w lekcji poniżej.

Typowe błędy

  • W wyniku ROLLUP wartość NULL w kolumnie grupującej może być wierszem sumy częściowej albo prawdziwym NULL. GROUPING() je rozróżnia.

Ćwicz to