MySQL 每个月的每日 运行 总计

Daily running total for each month in MySQL

我有一个包含每日计数数据的 table,看起来像这样:

Date         Count
2019-12-01     100
2019-12-02     200
2019-12-03     300
...            ...
2020-01-01      10
2020-01-02     200
2020-01-03     500

我正在尝试计算每个 月每天 的 运行 总数。期望的结果应如下所示:

Date         Count    Running Total
2019-12-01     100              100
2019-12-02     200              300
2019-12-03     300              600
...            ...
2020-01-01      10               10
2020-01-02     200              210
2020-01-03     500              710
...

我设法计算了一个月的 运行 总数,但是我很难通过单个查询获得多个月的 运行 总数。任何人都知道如何做或可以提供仅使用 SQL 的想法?我是运行MySQL5.7。

最佳

SELECT SUM(Count) AS "Total count" FROM your_table WHERE Date < '2019-12-01';

显然,日期是您要检查的任何日期。

您可以使用像

这样的会话变量
CREATE TABLE table1
    (`Date` date, `Count` int)
;

INSERT INTO table1
    (`Date`, `Count`)
VALUES
    ('2019-12-01', 100),
    ('2019-12-02', 200),
    ('2019-12-03', 300),
    ('2020-01-01', 10),
    ('2020-01-02', 200),
    ('2020-01-03', 500)
;
✓

✓
SELECT
  `Date`
  , `Count`
  ,running_coint
FROM
(SELECT 
  `Date`
  , `Count`
  , IF(MONTH(@date) =  MONTH(`Date`),@running_coint := @running_coint + `Count`,@running_coint := `Count`) running_coint
,  @date := `Date`
FROM (SELECT * FROM table1 ORDER BY `Date`) t,(SELECT @running_coint := 0) a,(SELECT @date := '1999-01-01') b) t1
ORDER BY`Date`;
Date       | Count | running_coint
:--------- | ----: | ------------:
2019-12-01 |   100 |           100
2019-12-02 |   200 |           300
2019-12-03 |   300 |           600
2020-01-01 |    10 |            10
2020-01-02 |   200 |           210
2020-01-03 |   500 |           710

db<>fiddle here