0
我正在搜索並找不到 解決我的問題的答案。MySQL查詢以GROUP BY HOUR填充NULL值
我想打一個小時的報告,我將與此查詢
SELECT
HOUR(ce.datetime_entry_queue) hour,
COUNT(ce.id) incoming,
COUNT(IF(ce.datetime_init IS NULL,1,NULL)) dropped,
COUNT(IF(ce.datetime_init IS NOT NULL,1,NULL)) answered
FROM
call_center.call_entry ce
WHERE
ce.datetime_entry_queue>='2014-09-04 15:00:00' AND
ce.id_campaign='1'
GROUP BY HOUR(ce.datetime_entry_queue)
這讓將產生我想要的結果。並給我結果如下
|hour|incoming|dropped|answered|
|----|--------|-------|--------|
| 15 | 200 | 2 | 198 |
| 16 | 220 | 10 | 210 |
| 17 | 154 | 0 | 154 |
女巫是好的,但如果有一個在16小時無呼叫從16:00至17:00, 我會得到以下結果。
|hour|incoming|dropped|answered|
|----|--------|-------|--------|
| 15 | 200 | 2 | 198 |
| 17 | 154 | 0 | 154 |
我怎樣才能查詢到的空值的行零個值返回這樣
|hour|incoming|dropped|answered|
|----|--------|-------|--------|
| 15 | 200 | 2 | 198 |
| 16 | 0 | 0 | 0 |
| 17 | 154 | 0 | 154 |
我已經與創建包含小時表試過(0 - 23)
CREATE TABLE `report_hours` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`hour` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=25;
查詢:
SELECT
rh.hour,
COUNT(ce.id) incoming,
COUNT(IF(ce.datetime_init IS NULL,1,0)) dropped,
COUNT(IF(ce.datetime_init IS NOT NULL,1,0)) answered
FROM
call_center.report_hours rh
LEFT JOIN
call_center.call_entry ce
ON
HOUR(ce.datetime_entry_queue)=rh.hour
WHERE
ce.datetime_entry_queue>='2014-09-05 15:00:00' AND
ce.id_campaign='1'
GROUP BY rh.hour
請幫忙。
謝謝
工程就像一個魅力:-)謝謝 – user1972670 2014-09-04 19:16:01
很高興聽到!添加了一些解釋。 – Rimas 2014-09-04 19:49:06