簡體   English   中英

如何計算每半小時的消息數?

[英]How to count number of messages per half hour?

考慮下表:

msg_id  _time
-------------
1       13:32
2       13:56
3       14:05
4       15:00
5       15:17
6       15:28
7       16:40

我目前正在匯總每小時的消息數量,如下所示:

SELECT HOUR(_time) AS hour, COUNT(msg_id) AS cnt FROM messages GROUP BY hour 
ORDER BY hour

這導致結果集如下:

hour  cnt
---------
13    2
14    1
15    3
16    1

然而,我想要的是每小時的計數:

hour   cnt
----------
13:30  2
14:00  1
14:30  0
15:00  3
15:30  0
16:00  0
16:30  1

使這成為可能的查詢是什么? 如果有必要,我想我可以用半小時時間(00:00、00:30、01:00、01:30、... 23:00、23:30)制作一張桌子,但我不想太過分。 (而且我仍然不知道如何使用該表)。

任何幫助是極大的贊賞:-)

你可以用case when

SELECT COUNT(msg_id) AS cnt, CONCAT(CAST(HOUR(_TIME) AS CHAR(2)), ':', (CASE WHEN MINUTE(_time) < 30 THEN '00' ELSE '30' END)) AS hour
FROM messages
GROUP BY CONCAT(CAST(HOUR(_TIME) AS CHAR(2)), ':', (CASE WHEN MINUTE(_time) < 30 THEN '00' ELSE '30' END))
ORDER BY hour

我想我可以用半小時時間(00:00、00:30、01:00、01:30、... 23:00、23:30)制作一張桌子,但我不太喜歡。

是的,如果您被迫使用 MySQL,這是正確的解決方案。可以使用其他方式,但會變得混亂並且速度會變慢。

(而且我仍然不知道如何使用該表)

使用左連接:

SELECT
    halfhours.start AS hour,
    COUNT(*) AS count
FROM halfhours
LEFT JOIN messages
ON messages._time >= halfhours.start AND messages._time < halfhours.end
GROUP BY halfhours.start

嘗試以這種方式分組:

group by hour(_time), floor(minute(_time)/30)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM