我有一个表,它包含每分钟相同时间间隔的多个数据。我想在最后10分钟内每5分钟汇总一次数据。我已经尝试了所有针对堆栈溢出提供的解决方案,但对我来说并没有获得准确的数据,因为他们都没有尝试在固定的时间间隔内获得数据。
我正在使用这个查询:
SELECT ROUND(unix_timestamp(footable.createdTime)/(60 * 5)) AS timekey, avg(mainData) as aggData
FROM footable
WHERE footable.createdTime > date_sub(now(), INTERVAL 10 MINUTE)
GROUP BY timekey
它每次最多应该返回2条记录,但大多数时候它返回3条记录。
注:-表中包含每确认一分钟的数据,这是10分钟的测试条件,可能是最后一小时的数据。仔细阅读描述,这不是一个重复的问题。
任何帮助都将不胜感激。。!!
我自己想好了,下面是解决问题的查询:
SET @timeStmp := UNIX_TIMESTAMP(date_sub(now(), INTERVAL 10 MINUTES));
SELECT @timeStmp := IF(((unix_timestamp(footable.createdTime) - @timeStmp) >= 295), unix_timestamp(footable.createdTime),@timeStmp) as timekey, avg(mainData) as aggData
FROM footable
WHERE footable.createdTime > date_sub(now(), INTERVAL 10 MINUTE)
GROUP BY timekey
此查询将在每次执行时提供精确的分钟到分钟间隔聚合数据。享受