我有一张表格,其中完成的交易次数和交易持续时间按持续时间分组。
现在我想累积地添加交易,例如:持续时间1交易是2,持续时间2交易(2 + 4)= 6,持续时间5交易(6 + 3)= 9。 请为此建议方法
答案 0 :(得分:1)
您似乎正在寻找cumulative
总和,但由于mySQL不支持ANSI OLAP
函数,因此无法以ANSI标准方式计算。
一种方法是使用变量并继续将当前值添加到前一个总和,如下所示。
set @runningSum := 0;
select duration,
transactions,
@runningSum := @runningSum + transactions AS TransRunningSum
from t1;
<强>结果:强>
duration transactions TransRunningSum
-------------------------------------------
1 2 2
2 4 6
5 3 9
6 1 10
7 2 12
11 1 13
13 1 14
15 1 15
<强> DEMO 强>
更新1:
由于mySQL支持相关查询,您也可以使用它来实现相同的结果。
SELECT duration
,transactions
,(
SELECT SUM(x.transactions)
FROM t1 x
WHERE x.duration <= t.duration
) AS TransRunningSum
FROM t1 t
ORDER BY t.duration;
<强>结果:强>
duration transactions TransRunningSum
-------------------------------------------
1 2 2
2 4 6
5 3 9
6 1 10
7 2 12
11 1 13
13 1 14
15 1 15
<强> DEMO 强>