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

如何通过SQL带条件连接查询获取部门名称及部门平均薪资

按部门统计平均薪资的SQL实现

首先明确两张表的常规命名约定,你可以根据实际业务里的表名替换对应标识:

  • 员工表记为emp,包含字段:empname(员工姓名)、emid(员工ID)、depid(所属部门ID)、sal(员工薪资)
  • 部门表记为dep,包含字段:depid(部门ID)、depname(部门名称)

核心实现逻辑是通过两表的公共关联字段depid做表连接,再按部门维度分组聚合计算平均薪资,最终仅返回要求的部门名称、平均薪资两个字段即可。

基础写法(仅统计有在职员工的部门)

如果需求只需要返回存在员工的部门统计结果,使用内连接即可,SQL代码如下:

SELECT
  d.depname,
  AVG(e.sal) AS avg_dep_sal
FROM dep d
INNER JOIN emp e
  ON d.depid = e.depid
GROUP BY d.depid, d.depname;

扩展写法(包含无员工的部门)

如果需要把没有任何员工的部门也展示在结果中,将内连接替换为左连接即可,无员工部门的平均薪资可以按业务需求处理为0或者NULL:

SELECT
  d.depname,
  AVG(COALESCE(e.sal, 0)) AS avg_dep_sal
FROM dep d
LEFT JOIN emp e
  ON d.depid = e.depid
GROUP BY d.depid, d.depname;

注意事项

  • 分组时建议带上depid字段,避免出现不同部门重名时统计数据混淆的问题
  • AVG()聚合函数默认会自动忽略NULL值,如果业务规则里薪资为NULL代表无薪、需要按0参与平均计算,就用COALESCE(e.sal, 0)做空值转换,无特殊需求直接写AVG(e.sal)即可
  • 返回字段的别名avg_dep_sal可以根据自身业务命名习惯调整,没有强制要求

内容的提问来源于stack exchange,提问作者Sagar Pahariya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:51:24