gpt4 book ai didi

mysql - 使用 GROUP BY 时包括缺失的(零计数)行

转载 作者:可可西里 更新时间:2023-11-01 07:27:19 26 4
gpt4 key购买 nike

我有一个接收短信的应用程序。我想做的是用 mysql 统计一个小时内的消息。例如,早上 7 点我收到了 10 条短信,早上 8 点我收到了 20 条等等。我的表有 ID、smsText、smsDate 这列……(其他的并不重要)。当我运行这个脚本时:

SELECT HOUR(smsDate), COUNT(ID) FROM SMS_MESSAGES GROUP BY HOUR(smsDate)

它显示我每小时收到多少条消息。问题是当我没有收到任何消息时,例如在下午 5 点,此语句不会返回计数为 0 的第 17 行,我得到如下结果:

Hour Count
...
15 10
16 5
18 2
...

,而我想要得到的是这个

Hour Count
...
15 10
16 5
17 0
18 2
...

我在网上搜索了一个解决方案,使用 UNION,但我不明白如何在我的解决方案中实现该解决方案。希望有人能帮助我。

最佳答案

您可以创建一个包含所有时间的表并加入这些表:

CREATE TABLE IF NOT EXISTS `hours` (
`hour` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `hours` (`hour`) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15), (16), (17), (18), (19), (20), (21), (22), (23);

SELECT hours.hour, count( SMS_MESSAGES.ID )
FROM hours
LEFT JOIN SMS_MESSAGES ON ( hours.hour = HOUR( SMS_MESSAGES.smsDate ) )
GROUP BY 1

关于mysql - 使用 GROUP BY 时包括缺失的(零计数)行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24305085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com