Задача #2

Для получения топ 10 водителей по количеству заказов в каждом городе можно использовать оконную функцию ROWNUMBER() или RANK() в SQL. Пример запроса:

Короткий ответ

Что ответить на собеседовании

Для получения топ 10 водителей по количеству заказов в каждом городе можно использовать оконную функцию ROWNUMBER() или RANK() в SQL. Пример запроса:

Подробный разбор

Ответ с пояснениями

Условие

Задача #2 Написать запрос, выводящий TOP-3 сотрудника по зарплате в каждом департаменте. Вывести название департамента, имя сотрудника, его зарплату.

employee table:

id name salary dept_id
10 John 1000 2
20 Tom 5000 3
30 Bill 3000 2

department table:

id name
1 Marketing
2 IT
3 Finance

Output: department_name, num, employee_name, salary

with cte as( select d.name as department_name, e.name as employee_name, e.salary, dense_rank from employee e join department d on e.id = d.id

Ответ

Для получения топ 10 водителей по количеству заказов в каждом городе можно использовать оконную функцию ROW_NUMBER() или RANK() в SQL. Пример запроса:

SELECT driver_id, city, order_count
FROM (
    SELECT
        driver_id,
        city,
        COUNT(order_id) AS order_count,
        ROW_NUMBER() OVER (PARTITION BY city ORDER BY COUNT(order_id) DESC) AS rn
    FROM orders
    GROUP BY city, driver_id
) sub
WHERE rn <= 10
ORDER BY city, order_count DESC;

Здесь мы группируем заказы по водителю и городу, считаем количество заказов, затем нумеруем водителей в каждом городе по убыванию количества заказов и выбираем только первые 10.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку