Być może jest to prostsze rozwiązanie dla Ciebie i zapobiega wykonywaniu przez bazę danych mnóstwa zapytań. To wykonuje tylko jedno zapytanie, a następnie wykonuje trochę obliczeń na wynikach w jednym przebiegu.
SET @runtot:=0;
SELECT
q1.d,
q1.c,
(@runtot := @runtot + 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
To da ci dodatkową kolumnę RT (suma bieżąca). Nie przegap instrukcji SET na górze, aby zainicjować najpierw bieżącą zmienną sumy lub po prostu otrzymasz kolumnę wartości NULL.