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;