-- without using SET variable 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 -- with SET variable SET @running_total := 0; SELECT q1.d, q1.c, (@running_total := @running_total + q1.c) AS rt FROM (SELECT DAYOFYEAR(`date`) AS d, COUNT(*) AS c FROM `orders` WHERE `hasPaid` > 0 GROUP BY d ORDER BY d ) AS q1