MySQL - 按小时分组,包括零值

时间:2017-03-10 20:55:27

标签: mysql sql

我一直在试图在MySQL 5.7中没有任何运气来查询和分组当天一小时的一堆测试记录,需要注意的是我想要几小时没有记录显示0,现在它们从结果

我用小时0-23创建了一个小时表。

> SELECT h.hour, COUNT(h.id) FROM hours h   LEFT OUTER JOIN
> test_result_detail td ON (h.hour = HOUR(td.date_time)) AND
> td.date_added = '2017-03-10' JOIN seq_test_set station ON
> td.station_id = station.id AND station.station = 'TS-5026' WHERE
> h.hour <= 13 GROUP BY 1;

结果: enter image description here

期望的结果:

1    0
2    0
3    0
4    0
5    0
6    5
7    32
8    29
9    22
10   24
11   15
12   14
13   7

1 个答案:

答案 0 :(得分:1)

我认为您的第二个JOIN应该只是LEFT JOINCOUNT()需要LEFT JOIN ed表中的列。

SELECT h.hour, COUNT(station.id)
FROM hours h LEFT OUTER JOIN
     test_result_detail td
     ON h.hour = HOUR(td.date_time) AND
        td.date_added = '2017-03-10' LEFT JOIN
     seq_test_set station
     ON td.station_id = station.id AND
        station.station = 'TS-5026'
WHERE h.hour <= 13
GROUP BY h.hour;