查询显示每个部门工资最低的员工
Query to display employees with lowest salary from each department
我想使用 min()
.
根据 salary
显示每个部门的最低收入员工
我有 id, first name, last name, department id, salary
的员工表
和部门,department_id, name
部门 id 从 1 到 5。
我做这个很麻烦,我只知道如何开始
SELECT name, surname from employees WHERE...
您将为此使用 min()
。您将使用 window 函数:
select e.*
from (select e.*,
rank() over (partition by department_id order by salary) as seqnum
from employees e
) e
where seqnum = 1
order by department_id;
使用 rank()over()
排名 window 功能,您可以根据需要对组内的行进行排名。在这里,我们对部门中工资最低的所有员工进行了排名。现在,如果我们 select rn =1 的行,那么它将 select 来自工资最低的部门的员工。
然后将结果与部门table相结合得到
的名字
With lowestEarningEmployees as
(
id, first_name, last_name, department_id, salary, rank()over(partition by department_id order by salary)rn from employees
)
select le.id, le.first_name, le.last_name, le.department_id,d.name, le.salary,
from lowestEarningEmployees le inner join departments d on le.department_id=d.department_id
** 如果一个部门中不止一名员工的薪水最低,所有员工都将被 selected。如果您只想 select 一名工资最低的员工,那么您需要使用 row_number()
而不是 rank()
。
你也可以使用子查询来得到你想要的结果(虽然我建议使用第一个):
Select e.id, e.first_name, e.last_name, e.department_id, d.name, e.salary
from employees e inner join department d on e.department_id = d.department_id
where e.salary=(select min(salary) from employees empl where e.department_id=empl.department_id)
我想使用 min()
.
salary
显示每个部门的最低收入员工
我有 id, first name, last name, department id, salary
的员工表
和部门,department_id, name
部门 id 从 1 到 5。
我做这个很麻烦,我只知道如何开始
SELECT name, surname from employees WHERE...
您将为此使用 min()
。您将使用 window 函数:
select e.*
from (select e.*,
rank() over (partition by department_id order by salary) as seqnum
from employees e
) e
where seqnum = 1
order by department_id;
使用 rank()over()
排名 window 功能,您可以根据需要对组内的行进行排名。在这里,我们对部门中工资最低的所有员工进行了排名。现在,如果我们 select rn =1 的行,那么它将 select 来自工资最低的部门的员工。
然后将结果与部门table相结合得到
的名字With lowestEarningEmployees as
(
id, first_name, last_name, department_id, salary, rank()over(partition by department_id order by salary)rn from employees
)
select le.id, le.first_name, le.last_name, le.department_id,d.name, le.salary,
from lowestEarningEmployees le inner join departments d on le.department_id=d.department_id
** 如果一个部门中不止一名员工的薪水最低,所有员工都将被 selected。如果您只想 select 一名工资最低的员工,那么您需要使用 row_number()
而不是 rank()
。
你也可以使用子查询来得到你想要的结果(虽然我建议使用第一个):
Select e.id, e.first_name, e.last_name, e.department_id, d.name, e.salary
from employees e inner join department d on e.department_id = d.department_id
where e.salary=(select min(salary) from employees empl where e.department_id=empl.department_id)