*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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章