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

SQL关联EMP与DEPT表查询各部门最高、最低工资问题求助

解决部门薪资统计需求的SQL方案

嘿,我懂你现在的烦恼——找了不少简易方案但始终没拿到预期结果对吧?别着急,针对你要「显示每个部门的名称以及该部门的最低和最高工资」的需求,我给你整理了一个严谨且实用的SQL方案,还会拆解逻辑帮你搞明白:

核心SQL语句

SELECT 
    d.DNAME AS 部门名称,
    MIN(e.SAL) AS 最低工资,
    MAX(e.SAL) AS 最高工资
FROM DEPT d
LEFT JOIN EMP e ON d.DEPTNO = e.DEPTNO
GROUP BY d.DNAME, d.DEPTNO
ORDER BY d.DEPTNO;

关键逻辑拆解

  • 表关联方式:用LEFT JOIN而非INNER JOIN,是为了保证哪怕某个部门没有任何员工,也能在结果里显示该部门的名称(此时最低工资和最高工资会显示为NULL)。如果你的场景里不需要展示空部门,直接把LEFT JOIN换成INNER JOIN就行。
  • 聚合函数的使用:MIN(e.SAL)和MAX(e.SAL)是SQL的聚合函数,会自动对每个分组内的SAL字段计算极值,正好对应你要的最低/最高工资。
  • 分组的严谨性:GROUP BY同时包含d.DNAME和d.DEPTNO,是为了避免极端情况(比如不同部门碰巧重名)导致的统计错误,按部门编号分组是最准确的,带上部门名称只是为了展示方便。
  • 结果排序:ORDER BY d.DEPTNO让结果按部门编号排序,看起来更规整,也符合日常查看习惯。

为什么之前的简易方案可能失效?

你提到之前的简易方案没得到预期结果,大概率是这几个原因:

  • 没做表关联:直接对EMP表聚合,但拿不到DEPT表的部门名称;
  • 用了INNER JOIN导致空部门被过滤;
  • 分组字段不完整:只按DNAME分组,遇到重名部门会把不同部门的薪资混在一起统计;
  • 没处理SAL字段的NULL值?不过从你给的EMP数据看,SAL都是有值的,这个可能性不大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:12:59