[英]MYSQL : How to calculate the moving average of each data?
如何检查每个项目的 3 个总和(移动平均值)?
我无法使用以下结果计算每个项目。
Original data :
scdate | value |
--------------------|--------|
2021-11-10 17:00:00 | 1943.98|
2021-11-10 17:00:18 | 1957.13|
2021-11-10 17:00:36 | 1953.94|
2021-11-10 17:00:54 | 1946.28|
2021-11-10 17:01:12 | 1960.29|
2021-11-10 17:01:29 | 1950.39|
2021-11-10 17:01:47 | 1942.62|
2021-11-10 17:02:05 | 1954.64|
2021-11-10 17:02:23 | 1958.21|
2021-11-10 17:02:41 | 1950.26|
2021-11-10 17:02:58 | 1945.33|
2021-11-10 17:03:16 | 1960.35|
使用 mysql
SELECT scdate,avg(tt.value) as avg_v FROM
(
SELECT t.scdate,t.value,(@rownum := @rownum + 1) - 1 AS rownum FROM (SELECT @rownum := 0)
r,scantech_data t
ORDER BY scdate asc
) tt
WHERE scdate >= '2021-11-10 17:00:00' and scdate <='2021-11-10 17:10:00'
GROUP BY tt.rownum - tt.rownum % 3
order by scdate
***Wrong result
scdate | avg_v |
--------------------|--------|
2021-11-10 17:00:00 | 1951.68|
2021-11-10 17:00:54 | 1952.32|
2021-11-10 17:01:47 | 1951.82|
2021-11-10 17:02:41 | 1951.98|
我怎样才能得到以下结果?
应该怎么修改??
***Correct result
scdate | value | avg_v |
--------------------|---------|--------|
2021-11-10 17:00:00 | 1943.98 | 1951.68|
2021-11-10 17:00:18 | 1957.13 | 1952.45|
2021-11-10 17:00:36 | 1953.94 | 1953.50|
2021-11-10 17:00:54 | 1946.28 | 1952.32|
2021-11-10 17:01:12 | 1960.29 | 1951.1 |
2021-11-10 17:01:29 | 1950.39 | 1949.21|
2021-11-10 17:01:47 | 1942.62 | 1951.82|
2021-11-10 17:02:05 | 1954.64 | 1954.37|
2021-11-10 17:02:23 | 1958.21 | 1951.26|
2021-11-10 17:02:41 | 1950.26 | 1951.98|
2021-11-10 17:02:58 | 1945.33 | 1952.84|
2021-11-10 17:03:16 | 1960.35 | 1960.35|
ps:2021-11-10 17:00:00 | 1943.98 | 1951.68|
1951.68 = (1943.98 + 1957.13 + 1953.94) / 3
使用版本:MySql 5.1.47
谢谢你的帮助。
SELECT scdate, value,
SUM(value)
OVER
(PARTITION BY scdate ORDER BY scdate ROWS BETWEEN CURRENT ROW AND 3 FOLLOWING)
FROM test;
近似查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.