Utilisation d'une requête corrélée :
SELECT t.id,
t.count,
(SELECT SUM(x.count)
FROM TABLE x
WHERE x.id <= t.id) AS cumulative_sum
FROM TABLE t
ORDER BY t.id
Utilisation des variables MySQL :
SELECT t.id,
t.count,
@running_total := @running_total + t.count AS cumulative_sum
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id
Remarque :
- Le
JOIN (SELECT @running_total := 0) r
est une jointure croisée et permet la déclaration de variables sans nécessiter unSET
séparé commande. - L'alias de la table,
r
, est requis par MySQL pour toute sous-requête/table dérivée/vue en ligne
Mises en garde :
- spécifique à MySQL ; non transférable vers d'autres bases de données
- Le
ORDER BY
est important; il garantit que l'ordre correspond à l'OP et peut avoir des implications plus importantes pour une utilisation plus compliquée des variables (c'est-à-dire :fonctionnalité pseudo ROW_NUMBER/RANK, qui manque à MySQL)