В calls — звонки клиентам, у непринятых end_at пустой. Звонки одного клиента не пересекаются. В products — открытые клиентам продукты: карты, вклады, кредиты, с моментом открытия opened_at.
Найдите продукты, которые открыли во время разговора с этим же клиентом: opened_at между start_at и end_at включительно.
Верните product_id, client_id, product_name, call_id. Порядок по product_id.
В работе: Оценка продаж через колл-центр: какие продукты оформили прямо на звонке.
Таблицы
calls — звонки
| Колонка | Тип | Что значит |
|---|---|---|
call_id | int | ключ |
client_id | int | клиент |
start_at | timestamp | начало |
end_at | timestamp | конец, NULL если не приняли |
products — открытые продукты
| Колонка | Тип | Что значит |
|---|---|---|
product_id | int | ключ |
client_id | int | клиент |
product_name | text | продукт |
opened_at | timestamp | момент открытия |
Пример: данные
calls · 3 строки
| call_id | client_id | start_at | end_at |
|---|---|---|---|
| 1 | 10 | 2025-10-05T10:00:00 | 2025-10-05T10:20:00 |
| 2 | 11 | 2025-10-05T11:00:00 | NULL |
| 3 | 12 | 2025-10-05T12:00:00 | 2025-10-05T12:30:00 |
products · 4 строки
| product_id | client_id | product_name | opened_at |
|---|---|---|---|
| 100 | 10 | Кредитная карта Платинум | 2025-10-05T10:12:00 |
| 101 | 10 | Вклад СмартВклад | 2025-10-05T18:00:00 |
| 102 | 11 | Дебетовая карта Блэк | 2025-10-05T11:05:00 |
| 103 | 13 | Страховка путешественника | 2025-10-05T12:10:00 |
Ожидаемый ответ
| product_id | client_id | product_name | call_id |
|---|---|---|---|
| 100 | 10 | Кредитная карта Платинум | 1 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
product_id, client_id, product_name, call_id
Источник: тестовое задание продуктового аналитика Т-Банка (опубликовано на No Data No Growth). Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.