Leçon 3 / 9 — Chapitre 6: Combiner fenêtres, CASE et sous-requêtes
Une somme conditionnelle : CASE à l'intérieur d'une fonction de fenêtre
Inversement, un CASE peut se trouver à l'intérieur de l'argument d'une fonction de fenêtre — utile pour cumuler seulement certaines lignes selon une condition.
Table reprise du chapitre 4 :
ventes_boutique
id | boutique | mois | montant
1 | Nord | 1 | 100
2 | Nord | 2 | 150
3 | Nord | 3 | 200
4 | Sud | 1 | 80
5 | Sud | 2 | 80
6 | Sud | 3 | 140
SELECT boutique, mois, montant,
SUM(CASE WHEN montant > 100 THEN montant ELSE 0 END) OVER (PARTITION BY boutique ORDER BY mois) AS cumul_grosses_ventes
FROM ventes_boutique;
Pour Nord : mois 1 (100, pas strictement supérieur à 100) contribue 0 ; mois 2 (150) contribue 150, cumul = 150 ; mois 3 (200) contribue 200, cumul = 350. Seuls les mois où montant dépasse 100 sont réellement additionnés dans le cumul.
À retenir :
SUM(CASE WHEN condition THEN colonne ELSE 0 END) OVER (...)cumule sélectivement, en ignorant (en ajoutant 0 pour) les lignes qui ne remplissent pas la condition.- Cette technique combine deux outils déjà connus (CASE et un agrégat de fenêtre) pour répondre à une question que ni l'un ni l'autre ne pourrait résoudre seul : « quel est le cumul des seules grosses ventes ? ».
À vous de jouer : quelle est la valeur de cumul_grosses_ventes pour la boutique Sud au mois 3 (montants : 80, 80, 140) ?
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 72 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès