mysql - 使用 group by 每 2 分钟对数据进行一次分组

标签 mysql sql

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

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

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 为单位进行分组,然后去掉秒(因为它不再有任何意义)。

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 

关于mysql - 使用 group by 每 2 分钟对数据进行一次分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14931654/

相关文章:

sql - 将三个不同表中的列合并为单个列

在 shell 脚本中使用 SQL*Loader 时找不到 sqlldr

mysql - SQL #/count from inner join

php - PDO错误:SQLSTATE[42000]: Syntax error or access violation: 1064

php - 按名称而不是按 2 个日期之间的日期对 sql 请求中的相同行进行排序

sql - 获取我在 Sql Server 中更新的行的 Id

mysql - (SQL Server) 在第一次出现 'character' 后返回子字符串值

php - 如何根据用户选择的下拉菜单更改 PHP 中的 SQL 查询

mysql - 在 MySQL 中搜索整个数据库的字符串的方法

sql - 显示与两个 ID 关联的记录