-- 这一段sql主要目的就是分下组,按照每10分钟,block就是唯一分组标志SELECT id,create_time,TIMESTAMPDIFF(MINUTE, create_time,now()), TIMESTAMPDIFF(MINUTE, create_time,now())div10AS block
FROM test_group
WHERE create_time >= DATE_SUB(NOW(),INTERVAL1HOUR)
-- 完整sql ,一定要返回block,因为可能某个10分钟没数据,-- 然后代码层面还要处理下,因为你知道最近1小时,-- 可以分成6段,然后都存0,然后返回数据在处理下,-- 因为有block,可以知道是那个时间段,在进行处理-- 主要 sql可以变通,间隔是活得,**间隔时间改(10)**,**最近一小时改sql中的 now()**SELECT a.*,b.block FROM test_group a innerjoin(SELECTmax(id) max_id,TIMESTAMPDIFF(MINUTE, create_time,now())div10as block
FROM test_group
WHERE create_time >= DATE_SUB(NOW(),INTERVAL1HOUR)groupby block
) b on a.id = b.max_id