如何在Mysql的最后10分钟内获得每5分钟的汇总数据?

时间:2016-04-06 13:16:27

标签: mysql

我有一个表,其中包含每分钟相同时间间隔的多个数据。我希望在最后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分钟的测试条件,它可能是最后一小时的数据。这不是一个重复的问题,请仔细阅读说明。

任何帮助将不胜感激.. !!

1 个答案:

答案 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

此查询将在每次执行时给出精确的每分钟间隔聚合数据。享受.. !!