如何累积显示行数据

时间:2017-10-08 07:45:25

标签: mysql sql database

我有一张表格,其中完成的交易次数和交易持续时间按持续时间分组。

enter image description here

现在我想累积地添加交易,例如:持续时间1交易是2,持续时间2交易(2 + 4)= 6,持续时间5交易(6 + 3)= 9。 请为此建议方法

1 个答案:

答案 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