我有一个表,其中包含每分钟相同时间间隔的多个数据。我希望在最后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分钟的测试条件,它可能是最后一小时的数据。这不是一个重复的问题,请仔细阅读说明。
任何帮助将不胜感激.. !!
答案 0 :(得分:3)
我自己想出来,下面是解决问题的查询:
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
此查询将在每次执行时给出精确的每分钟间隔聚合数据。享受.. !!