Menggunakan kueri yang berkorelasi:
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
Menggunakan variabel 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
Catatan:
- The
JOIN (SELECT @running_total := 0) r
adalah gabungan silang, dan memungkinkan deklarasi variabel tanpa memerlukanSET
separate yang terpisah memerintah. - Alias tabel,
r
, diperlukan oleh MySQL untuk setiap subquery/tabel turunan/tampilan sebaris
Peringatan:
- khusus MySQL; tidak portabel ke database lain
ORDER BY
penting; ini memastikan urutan cocok dengan OP dan dapat memiliki implikasi yang lebih besar untuk penggunaan variabel yang lebih rumit (IE:fungsi psuedo ROW_NUMBER/RANK, yang tidak dimiliki MySQL)