【SQL编写实战】查询部门工资前三高的所有员工
最近看到一个sql 题 描述为:
Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。
Department 表包含公司所有部门的信息。
Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id 。
编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。例如,根据上述给定的表,查询结果应返回:
sql:
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
)
ORDER BY Department,e1.Salary DESC
;
最后的order by Department,e1.Salary DESC 一定要加上,如果不加上,顺序就可能与排序不是正常排序。