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;

А вам попадались на собесах задачки с LeetCode?