Department Top Three Salaries

来源:互联网 发布:海外淘软件 编辑:程序博客网 时间:2024/06/05 17:53

表内自连接,得到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 E1INNER JOIN (SELECT DISTINCT Salary,DepartmentId FROM Employee) E2ON E1.DepartmentId=E2.DepartmentId AND E1.Salary<=E2.SalaryGROUP BY E1.id,E1.Name,E1.Salary,E1.DepartmentId) C WHERE C.RANK<4) AINNER 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;
0 0
原创粉丝点击