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

Oracle查询各部门平均薪资时关联表获取部门名称的方法

关联查询部门平均薪资的正确写法

要在结果中带出department_name字段,只需要通过两表共有的department_id字段关联dept表即可,给你两种可直接运行的写法:

  • 写法1:先聚合员工表计算各部门平均薪资,再关联部门表取名称,逻辑分层更清晰
SELECT
    agg.department_id,
    d.department_name,
    agg.AVERAGE_SALARY
FROM (
    SELECT
        department_id,
        ROUND(AVG(sal), 2) AS AVERAGE_SALARY
    FROM employees 
    GROUP BY department_id
) agg
LEFT JOIN dept d 
    ON agg.department_id = d.department_id;
  • 写法2:直接关联两表后分组,写法更简洁。由于部门id和部门名称是一一对应关系,分组时同时带上两个字段不会改变聚合粒度
SELECT
    e.department_id,
    d.department_name,
    ROUND(AVG(e.sal), 2) AS AVERAGE_SALARY
FROM employees e
LEFT JOIN dept d 
    ON e.department_id = d.department_id
GROUP BY e.department_id, d.department_name;

两种写法执行后都会返回你预期的结果:

DEPARTMENT_IDDEPARTMENT_NAMEAVERAGE_SALARY
1IT82700
2SALES72500

小提示:这里用LEFT JOIN是为了兼容「存在没有员工的部门」的场景,这类部门的平均薪资会显示为空;如果你只需要统计有在职员工的部门,换成INNER JOIN效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:57:31