gpt4 book ai didi

mysql - 使用 MySQL 查询计算每 x 行的平均值

转载 作者:行者123 更新时间:2023-11-29 08:57:30 25 4
gpt4 key购买 nike

我有一个 MySQL 表,结构如下:

timestamp | messageVals
-----------------------
1325825203| 46.5
1325825306| 48
1325825404| 43.75
1325825835| 49.625
1325826003| 49.625
1325826055| 47.125
1325794709| 42.875

依此类推,第四,它的总行数刚刚超过 2,000 行。我想一次计算一组二十个的平均值,并且会为平均值添加另一列。因此,每第二十行在 avg 列中都会有一个值,该值将是前面 20 个值的平均值,然后该值将重置并计算接下来的 20 个值的平均值。

          timestamp | messageVals | avg
--------------------------------
1325825203| 46.5 |
1325825306| 48 |
1325825404| 43.75 |
1325825835| 49.625 |
1325826003| 49.625 |
1325826055| 47.125 |
(20th) 1325794709| 42.875 | 47.15

用平均值填充第三列的最容易理解的查询是什么?

最佳答案

我不清楚您是否真的想要保留表中的平均值,还是只是在 SELECT 查询中计算它们。

假设是后者,你可以这样做:

set @rownum := 0;
set @sum := 0;

select ts,messageVals,the_avg
from (
select ts,messageVals,
@rownum := (@rownum + 1) as rownum,
@sum := IF(@rownum mod 20 = 1,0 + messageVals,@sum + messageVals) as running_sum,
IF(@rownum mod 20 = 0,@sum / 20,NULL) as the_avg
from so9571582
order by ts
) s;

关于mysql - 使用 MySQL 查询计算每 x 行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571582/

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