我陷入了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吗?谢谢
答案 0 :(得分:0)
您可以使用SUM
作为窗口函数来获取每个日期的运行总计。您也可以使用DISTINCT
删除重复的行:
SELECT DISTINCT `date`, SUM(`value`) OVER (ORDER BY `date` ASC) AS `value`
FROM example
ORDER BY `date`
答案 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)