mysql - 没有结果匹配时加入表
问题描述
我为此苦苦挣扎了几个小时,但没有成功。我创建了一个包含 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 选择中找到时间(第一个没有加入)。
当 OutgoingCalls 的结果在特定时间没有结果时,我希望得到所有 24 小时。
解决方案
您应该翻转外部联接。主表应该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
推荐阅读
- machine-learning - 如何处理目标变量中的时间步长与预测问题中的特征之间的不匹配?
- python - Scipy 没有显示正确的特征值?
- python - Pandas:分组并按行标签访问单元格以避免循环
- r - 使用 column_spec 的列宽在 KableExtra 中不起作用
- python - 如何拆分每个子列表中具有固定数量项目的列表
- python - 我的 Python 游戏没有像预期的那样运行
- javascript - 仅当 TextField 和 Select 都有值时如何启用按钮
- c - 对于一个 16 位的整型变量,你能给变量赋值 72368 吗?
- sql - 对子查询的结果做一个案例
- sql - 从数据透视表中与员工表没有关联的属性中排除所有