Използване на корелирана заявка:
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
Използване на 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
Забележка:
JOIN (SELECT @running_total := 0) r
е кръстосано присъединяване и позволява деклариране на променлива, без да се изисква отделенSET
команда.- Псевдонимът на таблицата,
r
, се изисква от MySQL за всяка подзаявка/извлечена таблица/вграден изглед
Предупреждения:
- Специфично за MySQL; не е преносим към други бази данни
ORDER BY
е важно; той гарантира, че поръчката съответства на OP и може да има по-големи последици за по-сложно използване на променливи (IE:psuedo ROW_NUMBER/RANK функционалност, която липсва на MySQL)