SQL选择值由相同的ID求和

时间:2018-03-19 20:22:59

标签: sql sum

这是我的表名为"员工"

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;出售"表。

有人可以给我一些帮助吗?非常感谢。

1 个答案:

答案 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)