Заказы по дням недели: объём и среднее время доставки

Средняя Даты и время: strftime('%w') + интервалы julianday Яндекс

Условие задачи

Таблица `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-задачи