You need to enable JavaScript to run this app. SQL Server查询各部门最低薪资员工语句结果错误求解决
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server查询各部门最低薪资员工语句结果错误求解决

问题原因

你编写的SQL逻辑错误出在内层的最低薪资查询没有按部门分组:

  • 不带GROUP BY DepID的前提下,select min(Salary) from Employee where DepID in (select distinct DepID from Employee)语句返回的是全表所有员工的最低薪资10000,而非每个部门各自的最低薪资,因此外层过滤后只有薪资为10000的John符合条件。
  • 额外补充:你写的where DepID in (select distinct DepID from Employee)条件属于多余逻辑,等价于没有过滤。

正确解法

解法1:关联子查询(兼容所有SQL版本)

SELECT ID, Name, Salary, DepID
FROM Employee e1
WHERE Salary = (
    SELECT MIN(Salary)
    FROM Employee e2
    WHERE e2.DepID = e1.DepID
)

这个写法会针对外层的每一条员工记录,匹配同部门的最低薪资,符合要求就会返回。如果同一个部门有多个薪资同为最低的员工,会全部返回。

解法2:窗口函数(SQL Server 2008及以上版本支持,执行效率更高)

WITH RankedEmp AS (
    SELECT 
        ID, Name, Salary, DepID,
        RANK() OVER(PARTITION BY DepID ORDER BY Salary ASC) AS SalaryRank
    FROM Employee
)
SELECT ID, Name, Salary, DepID
FROM RankedEmp
WHERE SalaryRank = 1

用RANK()函数按部门分组后对薪资升序排名,排名为1的就是部门最低薪资的员工,同样支持同部门多个最低薪资的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:24:02