【问题标题】:Mysql aggregated sum line by line [duplicate]Mysql逐行汇总总和[重复]
【发布时间】:2018-07-25 01:58:42
【问题描述】:

表 t1:

date       profit
2011-01-01  100
2011-01-02  -50
2011-01-03   25

我想得到如下输出:

date       aggregated profit
2011-01-01  100
2011-01-02   50
2011-01-03   75

对高效的 MySQL 查询有什么建议吗?

【问题讨论】:

  • 哪个 MySQL 版本?

标签: mysql sql


【解决方案1】:

您正在寻找累积金额。最有效的方法是使用变量:

select t.*, (@sum := @sum + profit) as cumulative_profit
from (select t.*
      from t
      order by date
     ) t cross join
     (select @sum := 0) params;

请注意,在早期版本的 MySQL 中,子查询不是必需的。在 5.7 左右的某个地方,变量需要子查询来尊重排序。

【讨论】:

  • 谢谢。很抱歉在打扰你之前我没有找到这个很好的讨论:create-a-cumulative-sum-column-in-mysql
  • @VengaVenga 。 . .不幸的是,该问题的公认答案在最新版本的 MySQL 中不起作用,因为您需要 join 的子查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 2017-05-31
  • 2013-04-18
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多