gpt4 book ai didi

mysql - 如何累计显示行数据

转载 作者:行者123 更新时间:2023-11-29 10:34:50 27 4
gpt4 key购买 nike

我有一个表,其中已完成的事务计数和事务持续时间按持续时间分组。

enter image description here

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

最佳答案

您似乎正在寻找cumulative sum,但由于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

关于mysql - 如何累计显示行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46628687/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com