我試圖計算每小時分組的條目。 我發現了一些有用的信息通知不同的網站和這裏:MySQL Group By HoursMysql結果每小時的數據
但結果不是我所期望的。 用下面的代碼我得到:
SELECT CONCAT(Hour, ':00-', Hour+1, ':00') AS Hours,
COUNT(`usage_time`) AS `usage` FROM `usage`
RIGHT JOIN (
SELECT 0 AS Hour
UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12
UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15
UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18
UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21
UNION ALL SELECT 22 UNION ALL SELECT 23
) AS AllHours ON HOUR(`usage_time`) = Hour
WHERE `usage_function` LIKE 'PlayedWholeSong' AND `usage_date` = DATE_SUB(CURDATE(), INTERVAL 0 DAY) OR `usage_time` IS NULL
GROUP BY Hour
ORDER BY Hour
結果:
Hours usage
2:00-3:00 0
4:00-5:00 6
6:00-7:00 2
8:00-9:00 3
9:00-10:00 20
10:00-11:00 1
14:00-15:00 14
15:00-16:00 1
16:00-17:00 32
17:00-18:00 10
由於這些條目的從今天開始,我沒有19:00以後的任何條目。 此外,我在00:00 - 01:00,03:00 - 04:00沒有看到任何輸入,其他幾個都沒有輸入。 但是我確實希望每24小時顯示一個列表和結果,即使沒有任何結果。 String的結果是在02:00 - 03:00之間顯示0。 今天我學到了很多關於mysql的知識,但沒有解決我的問題。
我希望你能學到一些東西,不一定是代碼,方向會很棒。
你想如何管理'空'使用時間? – 2013-02-12 18:13:22
就像我建議儘可能在db中做的那樣,你最好在db中做一個標準的'select hour(usage_time),... group by hour(usage_time)',然後填入「洞「在您的客戶端顯示邏輯。另外,你的where子句需要工作。你已經用2或2進行鏈接,並且沒有括號來告訴mysql如何執行邏輯。是(a和b)還是c',還是'a和(b或c)'? – 2013-02-12 18:18:56