You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询:按员工统计总收入,含无销售员工的0值返回

解决方法:左连接+分组+空值处理

这问题我太懂了!你之前用SUM...GROUP BY只拿到有销售记录的员工收入,是因为默认的内连接会过滤掉没有销售的员工。要得到包含所有员工(哪怕没销售)的统计结果,得这么做:

完整SQL语句

SELECT 
    e.name,
    COALESCE(SUM(s.price), 0) AS Income
FROM Employee e
LEFT JOIN Sells s ON e.eID = s.eID
GROUP BY e.eID, e.name

关键细节解释

  • LEFT JOIN 保留所有员工:用LEFT JOIN关联Employee和Sells表,这样Employee里的每一条记录(包括Josh这种没销售的)都会被保留,没有对应销售记录的行,Sells表的字段会显示为NULL。
  • COALESCE 处理空收入:SUM(s.price)对于没有销售的员工会返回NULL,COALESCE函数能把这个NULL转换成0,完美实现你要的“无销售员工收入为0”的需求。
  • 按eID+name分组:因为存在两个同名但eID不同的Mike,必须同时按eID和name分组,才能把他们的收入分开统计,不然会把两人的收入合并成29,就不符合你的预期结果了。

运行结果

执行上面的SQL后,会得到你想要的结果:

nameIncome
Mike15
Mike14
Josh0

内容的提问来源于stack exchange,提问作者Xie Weilun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:24:31