Mysql逐行汇总

时间:2018-02-14 13:14:14

标签: mysql sql

表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查询的任何建议吗?

1 个答案:

答案 0 :(得分:0)

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

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左右,变量需要子查询来遵守排序。