PaliSkill
← 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 :

  1. gros_actifs compte les clients actifs avec montant >= 100 : les clients 1 et 5 (120.456 chacun) — 2.
  2. petits_actifs compte les clients actifs avec montant < 100 : les clients 2 (85.2) et 4 (60.75) — 2.
  3. inactifs, via FILTER, 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 CASE ou FILTER) peuvent cohabiter dans un même SELECT, 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 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.