我想写mysql查询来获取数据,我想按小时计算每小时发送的短信,如果某个小时没有数据,它应该返回0。
另外,我想把前9个小时和后3个小时的数据一起计算,就像我在预期结果中提到的,第一行是00:00~09:00,最后一行是21:00~24:00
我想说的是,我找了很多问题,没有找到答案
SELECT COUNT( * ) , DATE_FORMAT( sms_sent.register_time, '%H:%i:%s' ) AS SENT_TIME
FROM sms_sent
WHERE sms_sent.sent_by =9998
AND DATE( sms_sent.register_time ) = '2018-12-27'
GROUP BY HOUR( sms_sent.register_time )
LIMIT 0 , 30
你期待的是什么
Sent Time Sent Count
00:00~09:00 0
09:00~10:00 0
10:00~11:00 0
11:00~12:00 0
12:00~13:00 0
13:00~14:00 0
14:00~15:00 0
15:00~16:00 0
16:00~17:00 0
17:00~18:00 0
18:00~19:00 0
19:00~20:00 0
20:00~21:00 0
21:00~24:00 0
这次我得到的是:
1条答案
按热度按时间bkkx9g8r1#
你需要创建一个
hours
表,以生成一天中的所有小时。然后你就可以从中创造出你感兴趣的时期JOIN
它会添加到您的短信数据中,以获取每个时段的短信数。此查询应提供所需的结果:输出(对于我创建的演示数据):
在dbfiddle上演示