Таблица deliveries содержит id, courier_id, order_id, delivery_time_min (INTEGER), status (TEXT: delivered, cancelled). Найдите 3 курьеров с наибольшим количеством успешных доставок (status = delivered). Выведите courier_id, delivered_count, avg_time (среднее время, округлить до целого).
CREATE TABLE deliveries (id INTEGER PRIMARY KEY, courier_id INTEGER, order_id INTEGER, delivery_time_min INTEGER, status TEXT);
GROUP BY COUNT AVG WHERE ORDER BY LIMIT
Задача «Топ-3 курьера по доставкам» учит агрегировать данные через GROUP BY, считать суммы, средние и количества по сегментам и фильтровать группы через HAVING. Такие задачи регулярно дают на собеседованиях аналитиков данных. Уровень лёгкий — это база, которую должен уверенно держать каждый аналитик.
Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).
Разбор темы с примерами — в гайде «Агрегации в SQL». Хочешь системно с нуля — пройди бесплатный курс «SQL с нуля».
Решить в интерактивной SQL-песочнице → ← Все SQL-задачи