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.