4

次のような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

私はある種のfor(各日付)が必要だと思います...しかし手がかりはありません。


Eric からの回答に従って使用した最後のクエリです。(ありがとう)。

SELECT t1.dia, sum(t2.operacions), sum(t2.amount) FROM

(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
4

3 に答える 3

6

まあ、これはうまくいくと思いますが、パフォーマンスがどうなるかはわかりません:

SELECT t1.date, sum(t2.count)
FROM mytable t1 INNER JOIN mytable t2 ON t2.date <= t1.date
GROUP BY t1.date
于 2010-06-22T16:38:09.243 に答える
4

結合なしでこの問題を解決することは可能です。

SET @cumulative_sum := 0;
SELECT date, @cumulative_sum := @cumulative_sum + count AS cumulative_sum
FROM table
ORDER BY date ASC
于 2010-06-22T20:06:00.183 に答える
-1

<=で自己結合し、行を合計すると、これが達成されます。

于 2010-06-22T16:38:17.917 に答える