Leçon 8 / 9 — Chapitre 6: Regroupements avancés
HAVING avec les regroupements avancés
HAVING filtre les groupes après un ROLLUP, CUBE ou GROUPING SETS exactement comme après un GROUP BY classique — y compris les lignes de sous-total, qui restent soumises au même filtre.
SELECT statut, COUNT(*) AS nb
FROM clients
GROUP BY ROLLUP (statut)
HAVING COUNT(*) >= 3;
Avant HAVING, ce ROLLUP produit 3 lignes : actif (4), inactif (2), total général (6). HAVING COUNT(*) >= 3 élimine la ligne inactif (2 < 3), mais garde actif (4) et le total général (6) — ce dernier n'échappe à aucun filtre du simple fait d'être un total.
À retenir :
HAVINGs'applique à toutes les lignes produites parROLLUP/CUBE/GROUPING SETS, y compris les lignes de sous-total ou de total général.- Une ligne de total général peut donc parfaitement être éliminée par un
HAVINGtrop restrictif, comme n'importe quel autre groupe. - Combiner
HAVINGà ces regroupements avancés permet de ne garder que les regroupements (détaillés ou globaux) qui dépassent un seuil précis.
À vous de jouer : la ligne de total général (nb = 6) survivrait-elle à HAVING COUNT(*) >= 7 ?
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