您的位置:首页 > 运维架构

Department Top Three Salaries

2016-03-22 14:42 375 查看
表内自连接,得到rank前三的记录

https://leetcode.com/problems/department-top-three-salaries/

第一种:

SELECT D.Name AS Department,A.Employee,A.Salary FROM
(SELECT C.DepartmentId,C.Name AS Employee,C.Salary FROM
(SELECT E1.id,E1.Name,E1.Salary,E1.DepartmentId,COUNT(1) AS RANK FROM Employee E1
INNER JOIN
(SELECT DISTINCT Salary,DepartmentId FROM Employee) E2
ON E1.DepartmentId=E2.DepartmentId AND E1.Salary<=E2.Salary
GROUP BY E1.id,E1.Name,E1.Salary,E1.DepartmentId) C WHERE C.RANK<4) A
INNER JOIN Department D ON D.Id=A.DepartmentId


第二种:

select d1.name as Department,
e1.name as Employee,
e1.salary as Salary
from Department d1, Employee e1
where (
select count(distinct e2.salary)
from Employee e2
where e2.salary > e1.salary and e2.departmentid = e1.departmentid
) < 3 and d1.id = e1.departmentid;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: