Zaktualizowana odpowiedź
OP poprosił o podejście z jednym zapytaniem, aby nie musieć ustawiać zmiennej użytkownika oddzielnie od używania zmiennej do obliczenia sumy bieżącej:
SELECT d.date,
@running_sum:[email protected]_sum + d.count AS running
FROM ( SELECT date, COUNT(*) AS `count`
FROM table1
WHERE date > '2011-09-29' AND applicationid = '123'
GROUP BY date
ORDER BY date ) d
JOIN (SELECT @running_sum := 0 AS dummy) dummy;
„Inicjalizacja w linii” zmiennych użytkownika jest również przydatna do symulacji innych funkcji analitycznych. Rzeczywiście nauczyłem się tej techniki z odpowiedzi jak ta .
Oryginalna odpowiedź
Musisz wprowadzić otaczające zapytanie, aby zestawić @running_sum
nad swoimi COUNT(*) rekordami:
SET @running_sum=0;
SELECT d.date,
@running_sum:[email protected]_sum + d.count AS running
FROM ( SELECT date, COUNT(*) AS `count`
FROM table1
WHERE date > '2011-09-29' AND applicationid = '123'
GROUP BY date
ORDER BY date ) d;
Zobacz też tę odpowiedź .