Možná je to pro vás jednodušší řešení a zabrání tomu, aby databáze musela dělat tuny dotazů. To provede pouze jeden dotaz a poté provede malou matematiku s výsledky v jediném průchodu.
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
Tím získáte další sloupec RT (průběžný součet). Nenechte si ujít příkaz SET nahoře, abyste nejprve inicializovali běžící proměnnou součtu, jinak získáte jen sloupec hodnot NULL.