La commande GROUP BY est utilisée en SQL pour grouper plusieurs résultats et utiliser des fonctions sur le groupement. L’ajout de la commande WITH ROLLUP permet quant à elle d’ajouter une ligne supplémentaire qui fonctionne tel qu’un système de “super-agrégateur” sur l’ensemble des résultats.
Syntaxe d’utilisation de GROUP BY … WITH ROLLUP
De façon générale, la commande GROUP BY … WITH ROLLUP s’utilise de la façon suivante :
SELECT colonne1, fonction(colonne2) FROM table GROUP BY colonne1 WITH ROLLUP
A noter : avant d’en apprendre plus sur la commande WITH ROLLUP, il est recommandé de bien maîtriser la commande GROUP BY.
Exemple d’utilisation
Prenons en considération une table “client” qui résume les clients, leurs code postal, leurs commandes, leurs date d’inscription :
Maintenant, il est possible de considérer que nous souhaitons obtenir des informations clés pour chaque code postal, tel que :
- Le nombre de clients pour chaque code postal
- Le nombre de commandes pour chaque code postal
- La date de première inscription par code postal
- La date de dernière inscription par code postal
Le besoin ci-dessus sera facilement effectué grâce à GROUP BY. L’ajout de la commande WITH ROLLUP permettra d’obtenir une ligne avec le complément d’informations suivantes (quelque soit le code postal) :
- Le nombre de clients total
- Le nombre de commandes totales
- La date de première inscription
- La date de dernière inscription
Afin d’obtenir les informations liées à ce besoin, la requête SQL sera la suivante :
SELECT `code_postal`, COUNT(*), SUM(`commande`), MIN(`date_inscription`), MAX(`date_inscription`) FROM `client` GROUP BY code_postal WITH ROLLUP
A noter : l’utilisation de la clause “WITH ROLLUP” est bien entendue une bonne astuce, qui se révèle utile pour améliorer les performances d’une application.