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

如何用单条SQL查询计算经理的总薪资(含自身薪资)

问题分析与解决方案

需求回顾

基于给定的Employees表,需要用单条SQL实现:

  • 计算每位经理的总薪资(自身薪资 + 直属下属薪资总和)
  • 无直属下属时,总薪资仅为自身薪资
  • 结果需包含经理姓名、自身薪资、下属薪资总和三个字段

原查询问题

你提供的查询存在两个核心问题:

  1. 未满足需求的第三个要求,缺少自身薪资和下属薪资总和的输出字段
  2. 虽然总薪资的计算逻辑在大部分场景下正确,但未明确拆分出需求要求的明细字段,不利于结果校验

修正后的SQL查询

SELECT 
    e1.Name AS `Manager Name`,
    e1.Salary AS `Own Salary`,
    COALESCE(SUM(e2.Salary), 0) AS `Subordinates Total Salary`,
    e1.Salary + COALESCE(SUM(e2.Salary), 0) AS `Total Salary`
FROM Employees e1
LEFT JOIN Employees e2 
  ON e1.ID = e2.ManagerID
GROUP BY e1.ID, e1.Name, e1.Salary
ORDER BY `Total Salary` DESC;

关键说明

  • LEFT JOIN:确保所有员工(即使没有下属)都能被查询到,不会被过滤
  • COALESCE(SUM(e2.Salary), 0):当经理没有直属下属时,SUM(e2.Salary)会返回NULL,用COALESCE将其转换为0,避免总薪资计算出现NULL
  • 字段拆分:明确输出自身薪资和下属薪资总和,完全匹配需求的三个字段要求
  • GROUP BY:基于主键e1.ID分组,同时包含姓名和薪资字段,符合SQL标准,避免分组逻辑错误

执行结果

执行上述查询后,会得到符合期望的结果:

Manager NameOwn SalarySubordinates Total SalaryTotal Salary
Alice90000165000255000
Bob80000145000225000
Charlie8500072000157000
David75000075000
Eve70000070000
Frank72000072000

内容的提问来源于stack exchange,提问作者Safwaa Samin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:42:05