Tôi đã kết thúc bằng cách sử dụng một giải pháp kết hợp các biến, dựa trên câu trả lời Stack Overflow được đăng tại đây . Giải pháp này có vẻ linh hoạt và hiệu quả hơn một chút so với các câu trả lời khác được cung cấp.
SELECT u.date,
@running_total := @running_total + u.count AS count
FROM (
SELECT COUNT(*) AS count, DATE_FORMAT(FROM_UNIXTIME(created), '%b %d %Y') AS date
FROM {users}
WHERE created >= :start_time AND created <= :end_time
GROUP BY YEAR(FROM_UNIXTIME(created)), MONTH(FROM_UNIXTIME(created)), DAY(FROM_UNIXTIME(created))
) u
JOIN (
SELECT @running_total := u2.starting_total
FROM (
SELECT COUNT(*) as starting_total
FROM {users}
WHERE created < :start_time
) u2
) initialize;
Lưu ý rằng các yêu cầu về nhóm theo, định dạng ngày và phạm vi chỉ là các chi tiết cụ thể của dự án cụ thể của tôi. Một dạng chung chung hơn của giải pháp này (theo câu hỏi ban đầu) sẽ là:
SELECT u.date,
@running_total := @running_total + u.count AS count
FROM (
SELECT COUNT(*) AS count, DATE(FROM_UNIXTIME(created)) AS date
FROM {users}
GROUP BY date
) u
JOIN (
SELECT @running_total := 0
) initialize;