Có lẽ một giải pháp đơn giản hơn cho bạn và ngăn cơ sở dữ liệu phải thực hiện rất nhiều truy vấn. Thao tác này chỉ thực hiện một truy vấn sau đó thực hiện một phép toán nhỏ về kết quả trong một lần chuyển.
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
Điều này sẽ cung cấp cho bạn một cột RT (tổng số đang chạy) bổ sung. Đừng bỏ lỡ câu lệnh SET ở trên cùng để khởi tạo biến tổng đang chạy trước tiên, nếu không bạn sẽ chỉ nhận được một cột giá trị NULL.