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