我陷入了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吗? 谢谢

===============>>#1 票数:0

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

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

dbfiddle.uk上的演示

  ask by Remy Scherer translate from so

===============>>#2 票数:0 已采纳

在这种情况下,请始终使用Windows功能https://mariadb.com/kb/zh-CN/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) 

  ask by Remy Scherer translate from so

本文未有回复,本站智能推荐: