表中按日期求和的值

时间:2019-10-20 09:29:20

标签: mysql date sum mariadb

我陷入了MySQL / MariaDB问题。我找到了一些PostgreSQL解决方案,但不幸的是我无法将其转换为MySQL。

我有一个包含日期和值的表格,想按日期对它们进行求和。

示例:

date       | value
2019-08-01 |  50
2019-09-01 |  30
2019-10-01 |  20

查询结果应将日期中的所有值相加。

date       | value
2019-08-01 |  50
2019-09-01 |  80
2019-10-01 | 100

有人可以帮助我使用此SQL吗?谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用SUM作为窗口函数来获取每个日期的运行总计。您也可以使用DISTINCT删除重复的行:

SELECT DISTINCT `date`, SUM(`value`) OVER (ORDER BY `date` ASC) AS `value`
FROM example
ORDER BY `date`

demo on dbfiddle.uk

答案 1 :(得分:0)

在这种情况下,请始终使用Windows函数https://mariadb.com/kb/en/library/window-functions/中可用的功能,但是您可以使用相关的子查询

Drop table if exists t;
create table t
(dt date, amount int);
insert into t values
('2010-10-01',30),
('2010-11-01',20),
('2010-12-01',50);

select t.*,(select sum(amount) from t t1 where t1.dt <= t.dt) cumamount
from t;

+------------+--------+-----------+
| dt         | amount | cumamount |
+------------+--------+-----------+
| 2010-10-01 |     30 |        30 |
| 2010-11-01 |     20 |        50 |
| 2010-12-01 |     50 |       100 |
+------------+--------+-----------+
3 rows in set (0.00 sec)