Таблица `orders` — заказы сервиса доставки еды. Для каждого дня недели посчитай: число заказов `orders_cnt`, суммарную выручку `revenue` (сумма `amount`) и среднее время доставки в минутах `avg_delivery_min` — интервал между `created_at` и `delivered_at`, округлённый до 1 знака. День недели выведи русским сокращением (Вс, Пн, Вт, Ср, Чт, Пт, Сб) в колонке `weekday`. Отсортируй по номеру дня недели strftime('%w') по возрастанию, где '0' = Вс, '1' = Пн, …, '6' = Сб. Ожидаемые колонки: weekday, orders_cnt, revenue, avg_delivery_min.
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
created_at TEXT NOT NULL, -- 'YYYY-MM-DD HH:MM:SS', момент оформления
delivered_at TEXT, -- момент доставки
amount INTEGER NOT NULL -- сумма заказа, ₽
);
даты strftime julianday день недели GROUP BY агрегация
Задача «Заказы по дням недели: объём и среднее время доставки» учит решать задачи по теме «Даты и время: strftime('%w') + интервалы julianday» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в Яндекс и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.
Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).
Хочешь разобрать SQL системно с нуля — пройди бесплатный курс «SQL с нуля» и закрепи навык в тренажёре.
Решить в интерактивной SQL-песочнице → ← Все SQL-задачи