*LeetCode Mysql查找排名前n的数值

编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工

Employee:

Id Name Salary DepartmentId
1 Joe 85000 1
2 Henry 80000 2
3 Sam 60000 2
4 Max 90000 1
5 Janet 69000 1
6 Randy 85000 1
7 Will 70000 1

Department:

Id Name
1 IT
2 Sales

All in the Code:

SELECT 
    d.Name AS "Department", e1.Name AS "Employee", e1.Salary
FROM
    Employee e1 JOIN Department d 
    on e1.DepartmentId = d.Id
WHERE
    3 > (SELECT COUNT(DISTINCT e2.Salary)
        FROM 
            Employee e2
        WHERE
            e2.Salary > e1.Salary
            AND e1.DepartmentId = e2.DepartmentId);

Return:

Department Employee Salary
IT Max 90000
IT Randy 85000
IT Joe 85000
IT Will 70000
Sales Henry 80000
Sales Sam 60000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章