STRING_AGG, FILTER et ROLLUP

Regrouper des valeurs en texte, compter selon une condition et ajouter des lignes de sous-total.

Syntaxe

STRING_AGG(column, separator [ORDER BY …])
aggregate(…) FILTER (WHERE condition)
GROUP BY ROLLUP (column1, column2)
  • MySQL appelle STRING_AGG GROUP_CONCAT ; SQL Server utilise aussi STRING_AGG.
  • ROLLUP ajoute un sous-total pour chaque colonne de tête et un total général.

Exemple

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

Commandes par canal, plus une ligne de total où le canal est NULL.

Tables utilisées : orders. Essayez-le dans une leçon ci-dessous.

Erreurs courantes

  • Dans un résultat ROLLUP, un NULL dans la colonne regroupée peut être une ligne de sous-total ou un vrai NULL. GROUPING() permet de les distinguer.

Pratiquer