Для получения топ 10 водителей по количеству заказов в каждом городе можно использовать оконную функцию ROWNUMBER() или RANK() в SQL. Пример запроса:
Задача #2
Для получения топ 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.