SQL GROUP BY WITH ROLLUP

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 :

idnomcode_postalcommandedate_inscription
1Paul7500022018-09-04
2Sandra1300042018-09-06
3Pierre7500062018-09-07
4Sandrine7500012018-09-08
5Jean1300012018-09-10

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

Résultats :

code_postalCOUNT(*)SUM(commande)MIN(date_inscription)MAX(date_inscription)
13000252018-09-062018-09-10
75000392018-09-042018-09-08
NULL5142018-09-042018-09-10

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.

Partager