SQL по складам и анализ ограничений

Продуктовый аналитик в Самокат

Задача

SQL по складам и анализ ограничений

Дано

При написании sql-запроса можно использовать любой синтаксис sql - MS SQL, mysql, Postgesql и так далее). Представим, что у нас есть 3 таблицы с данными:

orders (заказы):

order_id - номер заказа Тип данных - integer

warehouse_id - id склада Тип данных - integer

delivered_at - время доставки Тип данных - timestamp

created_at - время создания Тип данных - timestamp

Поле order_id уникальное

order_lines (состав заказа):

order_id - номер заказа Тип данных - integer

product_id - id продукта Тип данных - integer

quantity - кол-во штук в заказе Тип данных - integer

В одном заказе может быть несколько продуктов, следовательно для заказа может быть больше 1-й строки в этой таблице.

products (продукты):

product_id - id продукта Тип данных - integer

product_name - название продукта Тип данных - text

Поле product_id уникальное

Задание #1

Написать sql-запрос, который выведет 5 лучших и 5 худших продуктов на каждом складе за последний месяц. Лучших и худших определяем по количеству проданных штук.

Задание #2

Написать sql-запрос, который считает долю опозданий от всех заказов в разбивке по дням. Опоздание — это когда между временем доставки и созданием заказа прошло более 15 минут.

Задание #3

У нас есть проблема: курьеры таскают очень тяжелые заказы. Мы решили сделать в приложении ограничение на заказ бутылок воды.

Есть список sku, ты можешь заказать каждый из них, но не больше 1 штуки. Раньше мог взять любое количество. Через 2 недели после запуска мы решили посмотреть, изменилось ли что-то.

Вопросы:

  1. На какие метрики смотреть, чтобы оценить результаты?
  2. Как пользователи могли обойти ограничение?
  3. Как это проверить с помощью имеющихся трех таблиц (запрос не нужен, достаточно описать логику)?

Опубликовано 12 апреля 2026