我为此努力了好几个小时,都没有成功。 我创建了一个包含24小时的表,称为hours_table,列小时数为00-> 23,列结果均为0。 我已在表格中列出了通话时长,试图将一天中每个时段的通话时长总和进行分组。
SELECT date_format(date, '%H' ) as todayhours ,truncate(sum(duration),2)
as result FROM OutgoingCalls a
where date > CURDATE() group by date_format(date, '%H' )
此声明提供:
Todayhours , result
00 , 6
02 , 5
04 , 1
05 , 2
06 , 10
07 , 10
08 , 162 `
我想用0来获得缺少的时间,例如:
Todayhours , result
00 , 6
01 , 0
02 , 5
03 , 0
04 , 1
05 , 2
06 , 10
07 , 10
08 , 162
hours_table如下:
hours result
00 0
01 0
02 0
...
23 0
我有这个SQL:
SELECT date_format(date, '%H' ) as todayhours ,truncate(sum(duration),2)
as result FROM OutgoingCalls a
LEFT JOIN hours_table h ON h.hours = date_format(date, '%H' )
where date > CURDATE() group by h.hours
无论我从右加入到左加入做出了什么更改,我都只会从OutgoingCalls选择(没有加入的第一个)中获得小时数。
我希望在24小时之内获得全部服务,而在某些小时内没有结果。
答案 0 :(得分:0)
您应该翻转外部联接。主表应为hours_table
而不是OutgoingCalls
,如:
SELECT
h.hours,
date_format(date, '%H' ) as todayhours,
truncate(sum(duration),2) as result
FROM hours_table h
LEFT JOIN OutgoingCalls a ON h.hours = date_format(date, '%H' )
WHERE date > CURDATE()
GROUP BY h.hours