Посчитать по исполнителям приоритетные processing-заказы за март 2024 года. Найти среднюю выручку по категории. Посчитать уникальных клиентов с заказами в Electronics. Вывести отклонённые или отменённые заказы. Найти исполнителя с наибольшим числом завершённых заказов.
SQL: пять задач на аналитику заказов и поиск лидирующего исполнителя
Посчитать по исполнителям приоритетные processing-заказы за март 2024 года.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
- Посчитать по исполнителям приоритетные
processing-заказы за март 2024 года. - Найти среднюю выручку по категории.
- Посчитать уникальных клиентов с заказами в Electronics.
- Вывести отклонённые или отменённые заказы.
- Найти исполнителя с наибольшим числом завершённых заказов.
Предполагается таблица orders с полями из запросов. В исходном условии смешаны названия status и state; ниже считаем, что статус хранится в одном поле state. Если в вашей схеме это status, замените имя последовательно во всех запросах.
- Количество заказов в статусе "processing" по каждому исполнителю за март 2024 года для приоритетных заказов:
SELECT executor, COUNT(*) AS processing_orders_count
FROM orders
WHERE state = 'processing'
AND priority = 'high'
AND order_date >= '2024-03-01' AND order_date < '2024-04-01'
GROUP BY executor;
- Средняя выручка по каждой категории товаров:
SELECT category, AVG(revenue) AS avg_revenue
FROM orders
GROUP BY category;
- Количество уникальных клиентов, сделавших заказы в категории "Electronics":
SELECT COUNT(DISTINCT client_id) AS unique_clients
FROM orders
WHERE category = 'Electronics';
- Список заказов, которые были отклонены или отменены:
SELECT *
FROM orders
WHERE state IN ('rejected', 'cancelled');
- Исполнитель, который обработал наибольшее количество заказов в статусе "completed":
WITH counts AS (
SELECT executor, COUNT(*) AS n
FROM orders
WHERE state = 'completed'
GROUP BY executor
)
SELECT executor, n
FROM counts
WHERE n = (SELECT MAX(n) FROM counts);
Последний запрос возвращает всех исполнителей, разделивших максимум. AVG пропускает неизвестную выручку, а COUNT(DISTINCT client_id) не учитывает NULL. Значение cancelled для отмены предполагается явно: его нужно сверить со справочником статусов.