Leçon 1 / 9 — Chapitre 4: Agrégats de fenêtre et cadres
SUM() OVER : un total cumulé, pas un total global
Contrairement à SUM() avec GROUP BY, qui réduit chaque groupe à une seule ligne, SUM() OVER (... ORDER BY ...) conserve toutes les lignes et calcule, pour chacune, un total cumulé jusqu'à cette ligne.
Nouvelle table pour ce chapitre (montants en dollars) :
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(montant) OVER (PARTITION BY boutique ORDER BY mois) AS total_cumule
FROM ventes_boutique;
Pour Nord : mois 1 → 100 ; mois 2 → 100 + 150 = 250 ; mois 3 → 100 + 150 + 200 = 450. Chaque ligne accumule les montants des mois précédents et le sien, au sein de sa propre boutique.
À retenir :
SUM() OVER (... ORDER BY ...), sans précision de cadre, calcule par défaut un total cumulé (de la première ligne de la partition jusqu'à la ligne courante).- C'est la présence d'un
ORDER BYdans la clauseOVERqui déclenche ce comportement cumulatif — sans lui, comme on le verra dans la leçon suivante, le résultat est différent.
À vous de jouer : quel est le total_cumule pour la boutique Sud au mois 2 (80, puis 80) ?
Continuez ce module
Débloquez les leçons restantes ainsi que l'attestation finale.
8 000 XOF / 12,20 € / 13,29 $
Débloquez les 78 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.