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 l'attestation finale.

8 500 XOF / 12,96 € / 14,12 $

Débloquez les 87 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.