使用MySQL计算每个时间间隔内的记录数
我有一个MySQL查询,我正在运行该查询,以计算在15分钟的时间间隔内,在任何给定的小时(在任何给定的一天等)内,一个用户已经预订了多少个电话。到目前为止,我已经:使用MySQL计算每个时间间隔内的记录数,mysql,group-by,minute,Mysql,Group By,Minute,我有一个MySQL查询,我正在运行该查询,以计算在15分钟的时间间隔内,在任何给定的小时(在任何给定的一天等)内,一个用户已经预订了多少个电话。到目前为止,我已经: SELECT date_action, DATE_FORMAT(date_action, "%i") AS minute, CASE WHEN minute(date_action) BETWEEN 0 and 14 THEN '00' WHEN minute(date_action) BETWEEN 15
SELECT
date_action,
DATE_FORMAT(date_action, "%i") AS minute,
CASE
WHEN minute(date_action) BETWEEN 0 and 14 THEN '00'
WHEN minute(date_action) BETWEEN 15 and 29 THEN '15'
WHEN minute(date_action) BETWEEN 30 and 44 THEN '30'
WHEN minute(date_action) BETWEEN 45 and 59 THEN '45'
END AS intervals
FROM
clients
WHERE
HOUR(date_action) = 09
AND DAY(date_action) = 15
AND MONTH(date_action) = 07
AND YEAR(date_action) = 2013
这一点很好,但我缺少的神奇成分是分配给每个间隔的调用数的“计数”,例如,上面的代码生成:
Date_time - Minute - Interval
2013-07-15 09:54:24 - 54 - 45
2013-07-15 09:29:32 - 29 - 15
2013-07-15 09:13:33 - 13 - 00
2013-07-15 09:53:53 - 53 - 45
2013-07-15 09:00:49 - 00 - 00
因此,我将分钟数转换为时间间隔,因为我只想为每个时间间隔返回一行,然后在其中附加一列,其中包含该时间间隔内的呼叫数,即
Interval - Count
45 - 2
15 - 1
00 - 2
我觉得我在这件事上撞砖墙的时间太长了,所以任何帮助都将不胜感激。虽然查询后会进行一些后处理,但如果可能的话,我更愿意使用SQL完成这一切。:) 您可以按间隔分组并选择计数
SELECT
count(date_action) as count,
CASE
WHEN minute(date_action) BETWEEN 0 and 14 THEN '00'
WHEN minute(date_action) BETWEEN 15 and 29 THEN '15'
WHEN minute(date_action) BETWEEN 30 and 44 THEN '30'
WHEN minute(date_action) BETWEEN 45 and 59 THEN '45'
END AS intervals
FROM
clients
WHERE
HOUR(date_action) = 09
AND DAY(date_action) = 15
AND MONTH(date_action) = 07
AND YEAR(date_action) = 2013
AND rep_id = 28
GROUP BY intervals
那将是另一种方式
%是模运算符OMG,我怎么没看到。我猜又坐得离我的屏幕太近了!非常感谢。:)
select period, Sum(NumberOfTimes) as NumberOfTimes
From
(Select minute(date_action) % 15 as period, 1 as NumberOfTimes
From Clients
WHERE
HOUR(date_action) = 09
AND DAY(date_action) = 15
AND MONTH(date_action) = 07
AND YEAR(date_action) = 2013
AND rep_id = 28
) dummyName
Group By period