使用group by每2分钟对数据进行分组

时间:2013-02-18 07:53:58

标签: mysql sql

我有一个数据库,可以找到每分钟的总位数,并使用group by语句对它们进行分组。我想知道,我如何使用相同的group by语句对totalBits进行分组并每2分钟求和一次?

这是我每分钟分组的查询集

SELECT SUM(totalBits ) AS totalBits,
EXTRACT( YEAR FROM timeStampID ) AS YEAR,
EXTRACT( MONTH FROM timeStampID ) AS MONTH ,
EXTRACT( DAY FROM timeStampID ) AS DAY ,
EXTRACT( HOUR FROM timeStampID ) AS HOUR ,
EXTRACT( MINUTE FROM timeStampID ) AS MINUTE ,
EXTRACT( SECOND FROM timeStampID ) AS SECOND FROM  `ipByteReceive1`
WHERE  `timeStampID` >  '2013-01-21 08:58:55'
GROUP BY YEAR, MONTH , DAY , HOUR, MINUTE

这就是我得到的:

totalBits | YEAR | MONTH | DAY | HOUR | MINUTE
----------+------+-------+-----+------+--------
459       | 2013 | 1     | 21  | 8    | 58
2         | 2013 | 1     | 21  | 8    | 59
17        | 2013 | 1     | 21  | 9    | 00

这是我想要的:

totalBits | YEAR | MONTH | DAY | HOUR | MINUTE
----------+------+-------+-----+------+--------
461       | 2013 | 1     | 21  | 8    | 58
17        | 2013 | 1     | 21  | 9    | 00

提前致谢!

2 个答案:

答案 0 :(得分:1)

只需更改提取分钟的方式,然后按2进行分组,然后再减少(因为它不再意味着什么)。

SELECT SUM(totalBits ) AS totalBits,
EXTRACT( YEAR FROM timeStampID ) AS YEAR, 
EXTRACT( MONTH FROM timeStampID ) AS MONTH ,
EXTRACT( DAY FROM timeStampID ) AS DAY , 
EXTRACT( HOUR FROM timeStampID ) AS HOUR , 
EXTRACT( MINUTE FROM timeStampID ) - MOD(EXTRACT( MINUTE FROM timeStampID ), 2) AS MINUTE , 
WHERE  `timeStampID` >  '2013-01-21 08:58:55'
GROUP BY YEAR, MONTH , DAY , HOUR, MINUTE 

答案 1 :(得分:-1)

您应该按MINUTE - MOD(MINUTE,2)进行分组(因此请选择而不是您当前选择的列。)