185. Department Top Three Salaries

select d.name Department, e.name Employee, e.salary Salary from Employee e
inner join Department d on e.DepartmentId = d.id
where (e.DepartmentId,e.salary) in
(
select e1.DepartmentId,e1.salary from Employee e1,
(select distinct DepartmentId, Salary from Employee) e2
where e1.DepartmentId = e2.DepartmentId and e1.salary <= e2.salary
group by e1.DepartmentId,e1.salary
having count(distinct e2.salary)<=3
);

posted @ 2018-10-28 10:13  ffeng0312  阅读(148)  评论(0)    收藏  举报