Ik heb uiteindelijk een oplossing gebruikt die variabelen bevat, gebaseerd op een Stack Overflow-antwoord dat is gepost hier . Deze oplossing lijkt iets flexibeler en efficiënter te zijn dan andere gegeven antwoorden.
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;
Merk op dat de vereisten voor groeperen op, datumopmaak en bereik slechts specifieke kenmerken zijn van mijn specifieke project. Een meer algemene vorm van deze oplossing (volgens de oorspronkelijke vraag) zou zijn:
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;