假设我在 mysql 中有这样的数据:
date | value
2010 | 1
2011 | 4
2012 | 2
2013 | 3
我想要这样的结果:
date | value
2010 | 1
2011 | 5
2012 | 7
2013 | 10
我认为这很简单。我正在尝试这个:
select tabelA.date, sum(value)
from tabelA
inner join (select date from tabelA group by date) b on tabelA.date > b.date
group by tabelA.date
我觉得我遗漏了一些明显的东西。想要做这件事似乎很简单。
有什么想法吗?
最佳答案
MySQL 8+ 中最好的方法是窗口函数:
select a.date,
sum(a.value) over (order by a.date)
from tabelA a
order by a.date;
在旧版本中,变量可能是最好的方法,但必须谨慎使用:
select date, (@csum := @csum + value) as running_sum
from (select a.date, a.value as value
from tableA a
order by a.date
) a cross join
(select @csum := 0) params;
特别是,您希望子查询中的 order by
确保以正确的顺序处理数据。
关于mysql - 如何在 mysql 中将值逐行求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55277372/