我正在尝试编写一个查询,选择所有"引导",并按当天的每小时计数对它们进行分组。
示例:
lead 1: created today, 08.30
lead 2: created today, 09.30
lead 3: created today, 09.40
我需要一个结果,例如:
小时:0,领先0
小时:1,领先0
...
小时:8,领导1
小时:9,领先2
小时:9,领先2
小时:10,领先0
从一开始就需要,这就是我所拥有的,但它返回的结果不正确。
SELECT HOUR(created) AS `HOUR`, COUNT(*)
FROM lead
WHERE created >= CURDATE() - INTERVAL 1 DAY
GROUP BY HOUR(created)
我正在使用symfony,所以使用DQL这样做也很好。
非常感谢任何帮助!
答案 0 :(得分:2)
使用此
SELECT hrs.h AS `HOUR`, IFNULL(l.cnt, 0) AS lead_count FROM
(SELECT 0 AS h UNION ALL SELECT 1 AS h UNION ALL SELECT 2 AS h UNION ALL SELECT 3 AS h UNION ALL SELECT 4 AS h UNION ALL SELECT 5 AS h UNION ALL SELECT 6 AS h UNION ALL SELECT 7 AS h UNION ALL SELECT 8 AS h UNION ALL SELECT 9 AS h UNION ALL SELECT 10 AS h UNION ALL SELECT 11 AS h UNION ALL SELECT 12 AS h UNION ALL SELECT 13 AS h UNION ALL SELECT 14 AS h UNION ALL SELECT 15 AS h UNION ALL SELECT 16 AS h UNION ALL SELECT 17 AS h UNION ALL SELECT 18 AS h UNION ALL SELECT 19 AS h UNION ALL SELECT 20 AS h UNION ALL SELECT 21 AS h UNION ALL SELECT 22 AS h UNION ALL SELECT 23 AS h UNION ALL SELECT 24 AS h) hrs
LEFT OUTER JOIN
(SELECT HOUR(created) AS h, COUNT(*) AS cnt FROM lead WHERE created >= CONCAT(CURDATE(), ' 00:00:00') GROUP BY 1) l ON l.h = hrs.h