Заказы лежат в orders, состав заказа — в order_items. Отменённый заказ (status = cancelled) покупкой не считается.
Верните одно число cnt_users — сколько разных людей купили товар с sku_id = 2 1 октября 2025 года (по orders.created_at).
В работе: Быстрая сверка после акции: сколько человек реально купили товар дня.
Таблицы
orders — заказы
| Колонка | Тип | Что значит |
|---|---|---|
order_id | int | ключ |
user_id | int | покупатель |
created_at | timestamp | время оформления |
status | text | created / delivered / cancelled |
order_items — позиции заказа
| Колонка | Тип | Что значит |
|---|---|---|
order_id | int | заказ |
sku_id | int | товар |
qty | int | штук |
price_rub | numeric | цена за штуку |
Пример: данные
orders · 5 строк
| order_id | user_id | created_at | status |
|---|---|---|---|
| 1 | 101 | 2025-10-01T09:15:00 | delivered |
| 2 | 101 | 2025-10-01T18:40:00 | delivered |
| 3 | 102 | 2025-10-01T12:00:00 | delivered |
| 4 | 103 | 2025-10-01T13:30:00 | delivered |
| 5 | 104 | 2025-10-02T10:00:00 | delivered |
order_items · 6 строк
| order_id | sku_id | qty | price_rub |
|---|---|---|---|
| 1 | 2 | 1 | 349 |
| 2 | 2 | 2 | 349 |
| 3 | 2 | 1 | 349 |
| 3 | 5 | 1 | 1290 |
| 4 | 7 | 3 | 99 |
| 5 | 2 | 1 | 349 |
Ожидаемый ответ
| cnt_users |
|---|
| 2 |
Как проверяем
Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк не важен.
cnt_users
Источник: тестовое задание Ozon на стажёра-аналитика, пересказ на itresume.ru, 2023. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.