获取最高工资的部门名称 SQL
Get the name of department with max salary SQL
我有一个包含三个表的数据库,我需要使用 SQL return 工资成本最高的部门的名称,执行此操作的最有效查询是什么。一整天都在为这个绞尽脑汁。
|----------------------------------------|
| Departments |
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 1 | physics |
|---------------------|------------------|
| 2 | math |
|---------------------|------------------|
|------------------------------------------------|
| Empoyees |
|------------|------------------|----------------|
| id | name | department-id |
|------------|------------------|----------------|
| 1 | mike | 1 |
|------------|------------------|----------------|
| 2 | frank | 1 |
|------------|------------------|----------------|
| 3 | bob | 2 |
|------------|------------------|----------------|
|----------------------------------------|
| 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
limit
并非所有数据库都支持,但它们(几乎)都有替代方案。
我有一个包含三个表的数据库,我需要使用 SQL return 工资成本最高的部门的名称,执行此操作的最有效查询是什么。一整天都在为这个绞尽脑汁。
|----------------------------------------|
| Departments |
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 1 | physics |
|---------------------|------------------|
| 2 | math |
|---------------------|------------------|
|------------------------------------------------|
| Empoyees |
|------------|------------------|----------------|
| id | name | department-id |
|------------|------------------|----------------|
| 1 | mike | 1 |
|------------|------------------|----------------|
| 2 | frank | 1 |
|------------|------------------|----------------|
| 3 | bob | 2 |
|------------|------------------|----------------|
|----------------------------------------|
| 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
limit
并非所有数据库都支持,但它们(几乎)都有替代方案。