Leçon 3 / 9 — Chapitre 6: Regroupements avancés
GROUPING SETS : plusieurs regroupements en une requête
GROUP BY GROUPING SETS (...) calcule plusieurs regroupements différents en une seule requête, plutôt qu'un seul — le résultat empile les lignes de chaque regroupement demandé.
SELECT statut, CASE WHEN montant >= 0 THEN 'positif' ELSE 'negatif' END AS signe, COUNT(*) AS nb
FROM clients
GROUP BY GROUPING SETS ((statut), (CASE WHEN montant >= 0 THEN 'positif' ELSE 'negatif' END), ());
Cette requête empile trois regroupements : par statut seul (actif = 4, inactif = 2), par signe seul (positif = 5, negatif = 1, seul le client 6 avec montant = -150 étant négatif), et un total général sans aucun regroupement ((), nb = 6). Résultat : 2 + 2 + 1 = 5 lignes.
Dans les lignes issues d'un regroupement qui n'utilise pas une colonne donnée (par exemple, les lignes du regroupement par signe n'utilisent pas statut), cette colonne apparaît à NULL.
À retenir :
GROUPING SETS ((a), (b), ())calcule un regroupement para, un parb, et un total général, empilés dans un seul résultat.- Chaque parenthèse de
GROUPING SETSdéfinit un regroupement indépendant ;()(parenthèses vides) représente le total général, sans aucune colonne de regroupement. - Une colonne non utilisée par un regroupement donné apparaît à
NULLdans les lignes issues de ce regroupement.
À vous de jouer : combien de lignes ce résultat contient-il avec la valeur nb égale à 6 ?
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès