Menu
Coddy logo textTech

Total cumulé

Fait partie de la section Au-delà des bases du Journey SQL de Coddy — leçon 25 sur 27.

Un total cumulé est SUM sur une fenêtre avec ORDER BY : cela transforme l'agrégat en un agrégat qui croît ligne par ligne.

SELECT day, amount,
       SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenue

Sans ORDER BY, la fenêtre couvre chaque ligne et vous obtiendriez le total général sur chaque ligne. Avec celle-ci, la fenêtre s'étend d'une ligne à la fois dans cet ordre, de sorte que chaque ligne ne voit qu'elle-même et tout ce qui la précède.

Ajoutez une clause PARTITION BY pour réinitialiser le total cumulé par groupe, par exemple le total cumulé des revenus par région, jour après jour.

challenge icon

Défi

Facile

Tables et colonnes disponibles :

  • <strong>revenue</strong> : <strong>region</strong>, <strong>day</strong>, <strong>amount</strong>

Retournez region, day, amount, et region_running_total : le cumul de amount pour cette région jusqu'à ce jour inclus. Le total cumulé doit se réinitialiser pour chaque région.

Utilisez PARTITION BY sur la fenêtre. Ordonnez par region, puis par day.

Aide-mémoire

Un total cumulé utilise SUM avec ORDER BY dans la fenêtre — la fenêtre s'étend ligne par ligne dans cet ordre :

SELECT day, amount,
       SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenue

Ajoutez PARTITION BY pour réinitialiser le total cumulé par groupe :

SELECT region, day, amount,
       SUM(amount) OVER (PARTITION BY region ORDER BY day) AS region_running_total
FROM revenue
ORDER BY region, day

Essayez vous-même

SELECT region, day, amount,
       -- SUM(amount) OVER (PARTITION BY region ORDER BY day)
FROM revenue
ORDER BY region, day
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Au-delà des bases