Mysql 从最近24个结果中获取4组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 |

我想得到过去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  |    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