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

SQL Server如何通过聚合查询获取多部门平均薪资中的最小值

报错原因

SQL Server 不支持在同一查询层级嵌套聚合函数,你写的min(avg(e.salary))属于在聚合结果avg(e.salary)上再执行聚合运算,不符合SQL语法规范,因此触发报错。

解决方案

方案1:TOP 1 + 排序(实现最简单)

先统计所有部门的平均薪资,再按平均薪资升序排序,取第一条即可匹配你的需求:

SELECT TOP 1 
    d.Dname AS name, 
    AVG(e.salary) AS avg
FROM Employee e
INNER JOIN Departments d ON d.Dnum = e.dno
GROUP BY e.Dno, d.Dname
ORDER BY avg ASC

如果存在多个部门平均薪资同为最低的场景,将TOP 1修改为TOP 1 WITH TIES,即可返回所有符合最低薪资要求的部门记录。

方案2:CTE + 窗口函数(灵活度高,适合复杂场景)

如果后续需要扩展统计逻辑,推荐使用窗口函数实现,适配性更强:

WITH dept_avg_salary AS (
    SELECT 
        d.Dname AS name, 
        AVG(e.salary) AS avg,
        -- 按平均薪资升序排名,薪资相同排名一致
        RANK() OVER(ORDER BY AVG(e.salary) ASC) AS salary_rank
    FROM Employee e
    INNER JOIN Departments d ON d.Dnum = e.dno
    GROUP BY e.Dno, d.Dname
)
SELECT name, avg
FROM dept_avg_salary
WHERE salary_rank = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:54:00