Накопленная сумма за дни - PullRequest
4 голосов
/ 22 июня 2010

У меня есть таблица MySQL, подобная следующей:

date         count
2010-01-01   5
2010-01-02   6
2010-01-03   7

Как я могу накапливать сумму каждого дня на следующий? Таким образом, результат выглядит так:

date         acum per day
2010-01-01   5
2010-01-02   11
2010-01-03   18

Я думаю, что мне нужно какое-то время (для каждой даты) ... но без понятия.


Просто последний запрос, который я использовал после ответа Эрика. (Спасибо).

ВЫБРАТЬ t1.dia, сумма (t2.operacions), сумма (t2.amount) ОТ

(SELECT count(*) operations, sum(amount), date(b.timestamp) dia
    FROM transactions b group by date(b.timestamp)) t1 

INNER JOIN 

(SELECT count(*) operations, sum(amount), date(b.timestamp) dia
    FROM transactions b group by date(b.timestamp)) t2 

ON t2.dia <= t1.dia GROUP BY t1.dia

Ответы [ 3 ]

6 голосов
/ 22 июня 2010

Ну, я думаю, что это сработает, но я не уверен, какова будет производительность:

SELECT t1.date, sum(t2.count)
FROM mytable t1 INNER JOIN mytable t2 ON t2.date <= t1.date
GROUP BY t1.date
4 голосов
/ 23 июня 2010

Эту проблему можно решить без объединения.

SET @cumulative_sum := 0;
SELECT date, @cumulative_sum := @cumulative_sum + count AS cumulative_sum
FROM table
ORDER BY date ASC
0 голосов
/ 22 июня 2010

Самостоятельное объединение с <= и сумма строки, чтобы выполнить это. </p>

...