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

技术问询:查询平均薪资高于Finance部门讲师平均薪资的所有部门

问题分析与修正方案

需求:查询所有平均薪资高于Finance部门讲师平均薪资的部门。

原SQL存在的问题

  • 无效表关联:JOIN department ON e.dept_name = e.dept_name 这个条件是讲师自身部门字段的自相等,没有建立instructor和department表的有效关联,属于冗余且错误的关联逻辑。
  • 逻辑偏离需求:原语句筛选的是单个讲师薪资高于Finance部门平均薪资的记录,但实际需求是要找出整个部门的平均薪资高于Finance部门平均薪资的部门。

正确SQL写法

写法1:仅查询部门名称及对应平均薪资

SELECT 
    dept_name,
    AVG(salary) AS dept_avg_salary
FROM
    instructor
GROUP BY
    dept_name
HAVING
    AVG(salary) > (SELECT AVG(salary) FROM instructor WHERE dept_name = 'Finance');

写法2:查询部门完整信息(含building、budget)

如果需要展示部门的其他属性,需关联department表:

SELECT 
    d.dept_name,
    d.building,
    d.budget,
    AVG(i.salary) AS dept_avg_salary
FROM
    department d
JOIN
    instructor i ON d.dept_name = i.dept_name
GROUP BY
    d.dept_name, d.building, d.budget
HAVING
    AVG(i.salary) > (SELECT AVG(salary) FROM instructor WHERE dept_name = 'Finance');

逻辑说明

  1. 子查询(SELECT AVG(salary) FROM instructor WHERE dept_name = 'Finance') 用于计算Finance部门讲师的平均薪资。
  2. 主查询通过GROUP BY按部门分组,计算每个部门的讲师平均薪资。
  3. 使用HAVING子句筛选出平均薪资高于Finance部门的分组(注意:聚合函数的筛选必须用HAVING,不能用WHERE)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:45:35