Sql 按最大值仅选择名称

Sql 按最大值仅选择名称,sql,sql-server,Sql,Sql Server,我有一个要求 select w.Departament_Id, avg(w.Salary) as avgSal, dep.Name as Name from Employee w join Departament dep on dep.Id = w.Departament_Id group by w.Departament_Id, dep.Name 此请求返回一个表,其中包含每个部门的所有平均工资。接下来,目标是选择具有最大avgSal

我有一个要求

select
    w.Departament_Id, avg(w.Salary) as avgSal,
    dep.Name as Name
from
    Employee w
join
    Departament dep
on
    dep.Id = w.Departament_Id 
group by
    w.Departament_Id,
    dep.Name
此请求返回一个表,其中包含每个部门的所有平均工资。接下来,目标是选择具有最大avgSal值的部门名称。
如何解决它?

按聚合排序,并取前1名:

select TOP 1
    w.Departament_Id, 
    avg(w.Salary) as avgSal,
    dep.Name as Name
from Employee w
join Departament dep
    on dep.Id = w.Departament_Id 
group by
    w.Departament_Id,
    dep.Name
ORDER BY avg(w.Salary) DESC

根据服务器软件的不同,语法可能略有不同(有些允许按avgSal下单,有些不允许;有些将使用
LIMIT
而不是
TOP
),但这是一般的想法。

添加
ORDER BY avgSal desc
,并获取第一个条目。根据您的数据库引擎,这可以通过
top 1
limit 1
来实现。