Leçon 5 / 9 — Chapitre 6: Regroupements avancés
CUBE : toutes les combinaisons de regroupement
CUBE (a, b) calcule toutes les combinaisons possibles de regroupement entre les colonnes fournies — contrairement à ROLLUP, qui suppose une hiérarchie, CUBE ne privilégie aucun ordre.
WITH clients_signe AS (
SELECT statut, CASE WHEN montant >= 0 THEN 'positif' ELSE 'negatif' END AS signe
FROM clients
)
SELECT statut, signe, COUNT(*) AS nb
FROM clients_signe
GROUP BY CUBE (statut, signe);
CUBE (statut, signe) produit 4 familles de regroupement : par (statut, signe) ensemble, par statut seul, par signe seul, et le total général — soit toutes les combinaisons possibles des deux colonnes, y compris l'absence des deux.
Sur ces données : le détail (statut, signe) donne 3 lignes non vides (actif/positif = 4, inactif/positif = 1, inactif/negatif = 1 — aucun client actif n'est négatif) ; statut seul donne 2 lignes (actif = 4, inactif = 2) ; signe seul donne 2 lignes (positif = 5, negatif = 1) ; le total général donne 1 ligne (6). Soit 3 + 2 + 2 + 1 = 8 lignes.
À retenir :
CUBE (a, b)calcule toutes les combinaisons de regroupement entre les colonnes fournies :(a, b),(a),(b), et().- Contrairement à
ROLLUP,CUBEne suppose aucune hiérarchie entre les colonnes : un regroupement parbseul existe, même sansa. - Une combinaison de valeurs qui n'a aucune ligne correspondante dans les données (ici, actif + negatif) ne produit tout simplement aucune ligne dans le résultat.
À vous de jouer : combien de lignes ce résultat contient-il au total, et laquelle correspond au total général ?
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