PaliSkill
SQL avancé

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 :

  • HAVING s'applique à toutes les lignes produites par ROLLUP/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 HAVING trop 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