2016-04-06 36 views
2

我有一张表,其中包含每分钟相同时间间隔的多个数据。我想汇总最近10分钟内每5分钟的数据。我已经尝试了所有在堆栈溢出中提供的解决方案,但没有为我准确获取数据,因为他们都没有尝试在固定的时间间隔内获取数据。如何获得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分钟的测试条件,可能是最近一小时的数据。它不是一个重复的问题仔细阅读说明。

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

回答

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 

这个查询将给出确切分钟,在每次执行分钟间隔汇总数据。请享用..!!