Coding
October 26, 2021
Department Highest Salary
Мой вариант решения задачки department-highest-salary с LeetCode. Почему-то ближайшее, что вспомнил, это функцию Rank() из MS SQL Server, поэтому выбрал именно этот диалект.
Первым вариантом было решение через CTE.
WITH cte AS ( SELECT *, RANK () OVER ( PARTITION BY departmentId ORDER BY salary DESC ) salary_rank FROM employee ) SELECT d.name AS 'Department', e.name AS 'Employee', e.salary AS 'Salary' FROM cte e JOIN department d ON e.departmentId = d.id WHERE e.salary_rank = 1;
Потом стало понятно, что поскольку тут нет рекурсии, CTE можно заменить на подзапрос.
SELECT d.name AS 'Department', e.name AS 'Employee', e.salary AS 'Salary' FROM ( SELECT *, RANK () OVER ( PARTITION BY departmentId ORDER BY salary DESC ) salary_rank FROM employee ) e JOIN department d ON e.departmentId = d.id WHERE e.salary_rank = 1;