获取具有最大薪资SQL的部门名称

获取具有最大薪资SQL的部门名称,sql,greatest-n-per-group,Sql,Greatest N Per Group,我有一个包含三个表的数据库,我需要使用SQL返回工资成本最高的部门的名称,最有效的查询是什么。我整天都在为这个绞尽脑汁 |----------------------------------------| | Departments | |---------------------|------------------| | id | name | |-----------------

我有一个包含三个表的数据库,我需要使用SQL返回工资成本最高的部门的名称,最有效的查询是什么。我整天都在为这个绞尽脑汁

|----------------------------------------|
|             Departments                |
|---------------------|------------------|
|      id             |    name          |
|---------------------|------------------|
|        1            |   physics        |
|---------------------|------------------|
|        2            |    math          |
|---------------------|------------------|

您可以加入并聚合,然后排序并限制:

select d.name, sum(s.salary) sum_salary
from departments d
inner join employees e on e.department_id = d.id
inner join salaries s on s.employee_id = e.id
group by d.id, d.name
order by sum_salary desc
limit 1

并非所有数据库都支持
limit
,但它们(几乎)都有替代方案。

这就是诀窍!我一辈子都想不出来,我肯定想得太多了!
|----------------------------------------|
|             Salaries                   |
|---------------------|------------------|
|      employee-id    |    salary        |
|---------------------|------------------|
|        1            |   1000           |
|---------------------|------------------|
|        2            |    2000          |
|---------------------|------------------|
|        3            |    3000          |
|---------------------|------------------|
select d.name, sum(s.salary) sum_salary
from departments d
inner join employees e on e.department_id = d.id
inner join salaries s on s.employee_id = e.id
group by d.id, d.name
order by sum_salary desc
limit 1