← SQL avancé
Leçon 9 / 9 — Chapitre 4: CASE WHEN et agrégation conditionnelle
Cas pratique : un rapport à trois catégories
Ce cas pratique combine agrégation conditionnelle et FILTER dans une seule requête — les notions de ce chapitre.
SELECT
SUM(CASE WHEN statut = 'actif' AND montant >= 100 THEN 1 ELSE 0 END) AS gros_actifs,
SUM(CASE WHEN statut = 'actif' AND montant < 100 THEN 1 ELSE 0 END) AS petits_actifs,
COUNT(*) FILTER (WHERE statut = 'inactif') AS inactifs
FROM clients;
Étape par étape :
gros_actifscompte les clients actifs avecmontant >= 100: les clients 1 et 5 (120.456 chacun) — 2.petits_actifscompte les clients actifs avecmontant < 100: les clients 2 (85.2) et 4 (60.75) — 2.inactifs, viaFILTER, compte les clients 3 et 6 — 2.
Résultat final : gros_actifs = 2, petits_actifs = 2, inactifs = 2 — les 6 clients se répartissent exactement en trois groupes égaux.
À retenir :
- Plusieurs colonnes calculées par agrégation conditionnelle (via
CASEouFILTER) peuvent cohabiter dans un mêmeSELECT, chacune avec sa propre condition. - Vérifier que la somme des sous-groupes retombe sur le total de la table (ici, 2 + 2 + 2 = 6) est une bonne habitude pour détecter une condition mal formulée qui laisserait des lignes de côté ou en compterait deux fois.
À vous de jouer : les trois totaux de ce résultat (gros_actifs, petits_actifs, inactifs) somment-ils bien aux 6 lignes de la table clients ?
🔒
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