Leçon 6 / 9 — Chapitre 6: Regroupements avancés
La fonction GROUPING() : distinguer un sous-total d'un NULL réel
Une ligne de sous-total ou de total général (issue de ROLLUP, CUBE ou GROUPING SETS) affiche NULL dans une colonne non utilisée par ce regroupement — mais une vraie valeur NULL dans les données produirait exactement le même affichage. GROUPING(colonne) lève cette ambiguïté : elle renvoie 1 si la ligne est un sous-total pour cette colonne, 0 si c'est une vraie valeur (même si cette valeur est elle-même NULL).
SELECT statut, GROUPING(statut) AS est_sous_total, COUNT(*) AS nb
FROM clients
GROUP BY ROLLUP (statut);
Résultat : ('actif', 0, 4), ('inactif', 0, 2), (NULL, 1, 6). La troisième ligne a GROUPING(statut) = 1 : son NULL signifie « ceci est un total général », pas « le statut de ces clients est inconnu ».
À retenir :
GROUPING(colonne)renvoie 1 si la ligne est un sous-total ou un total général pour cette colonne, 0 si c'est une valeur réelle des données.- Cette fonction permet de distinguer, dans un résultat avec
ROLLUP/CUBE/GROUPING SETS, unNULLde sous-total d'unNULLréellement présent dans les données. - Sans
GROUPING(), les deux cas sont visuellement indiscernables dans le résultat.
À vous de jouer : quelle est la valeur de GROUPING(statut) pour la ligne concernant les clients 'actif' ?
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