这是我的表名为"员工"
eID | name |
==============
1 | Mike |
2 | Josh |
3 | Mike |
表格叫"卖出"
sID | eID | | price |
=========================
1 | 1 | | 8 |
2 | 3 | | 9 |
3 | 3 | | 5 |
4 | 1 | | 4 |
5 | 1 | | 3 |
这应该是我的预期结果:返回每位员工的总收入
name | Income |
==================
Mike | 15 |
Josh | 0 |
Mike | 14 |
实际上,我知道使用查询" SUM ... GROUP BY ..."获得15和14的收入,但我不知道如何获得0的收入,而#34;出售"表。
有人可以给我一些帮助吗?非常感谢。
答案 0 :(得分:0)
您只需要使用左外连接,这样您也可以获得缺失值的总和。您可以使用case表达式来处理空值
SELECT e.name,
COALESCE(SUM(price), 0) as Income
FROM employees e
LEFT OUTER JOIN sells s
ON e.eid = s.eid
GROUP BY e.eid, e.name
已编辑:不需要案例表达。为了处理缺失值,我把coalesce放在sum函数的返回上(SUM在空集上返回NULL)