Mysql 从最近24个结果中获取4组6条记录
我想得到过去24个结果中4组的平均值(每组各6条记录)。基本上得到前6条记录(从最后24条记录中)的平均值,然后是接下来6条记录的平均值,依此类推。我该怎么做 表示例:Mysql 从最近24个结果中获取4组6条记录,mysql,Mysql,我想得到过去24个结果中4组的平均值(每组各6条记录)。基本上得到前6条记录(从最后24条记录中)的平均值,然后是接下来6条记录的平均值,依此类推。我该怎么做 表示例: id | datetime | viewer_count ---------------------------------------- 1 | 2015-10-31 22:00:38 | 1548 2 | 2015-10-31 23:00:42 |
id | datetime | viewer_count
----------------------------------------
1 | 2015-10-31 22:00:38 | 1548
2 | 2015-10-31 23:00:42 | 1589
3 | 2015-11-01 00:00:44 | 1589
4 | 2015-11-01 01:00:37 | 1587
... | ... | ...
可以使用变量枚举连续记录:
SELECT (rn-1) DIV 6 AS groupNo, AVG(viewer_count) AS averageCount
FROM (
SELECT id, datetime, viewer_count,
@rn := @rn + 1 AS rn
FROM mytable
CROSS JOIN (SELECT @rn := 0) var
ORDER BY id DESC ) t
WHERE t.rn <= 24
GROUP BY (rn-1) DIV 6
ORDER BY groupNo DESC
在外部查询中
您可以使用整数除法将记录分组为6片:
最后,使用:
ORDER BY groupNo DESC
您可以重新建立初始行顺序
注意:上述查询假设您的表包含24条或更多记录
对于每半小时添加一次记录的表,是否可以调整查询?仅使用
t.rn获得不准确的结果
GROUP BY (rn-1) DIV 6
ORDER BY groupNo DESC