Problem: 185. 部门工资前三高的所有员工
👨🏫 参考题解
SELECT
d.Name AS 'Department', -- 选择部门的名称,并将其别名为 'Department'
e1.Name AS 'Employee', -- 选择员工的姓名,并将其别名为 'Employee'
e1.Salary -- 选择员工的薪水
FROM
Employee e1 -- 从 Employee 表中选取员工 e1
JOIN Department d -- 连接 Department 表
ON e1.DepartmentId = d.Id -- 根据 DepartmentId 进行连接,关联员工与其所属部门
WHERE
3 > (
SELECT
COUNT(DISTINCT e2.Salary) -- 统计同一部门内比当前员工 e1 薪水高的不同薪水数
FROM
Employee e2 -- 再次从 Employee 表中选取员工 e2
WHERE
e2.Salary > e1.Salary -- 条件1:选取薪水高于当前员工 e1 的员工 e2
AND e1.DepartmentId = e2.DepartmentId -- 条件2:确保 e2 和 e1 属于同一部门
)
;