Войти Регистрация
Data base

67. Продукты, оформленные во время звонка

Средняя

В calls — звонки клиентам, у непринятых end_at пустой. Звонки одного клиента не пересекаются. В products — открытые клиентам продукты: карты, вклады, кредиты, с моментом открытия opened_at.

Найдите продукты, которые открыли во время разговора с этим же клиентом: opened_at между start_at и end_at включительно.

Верните product_id, client_id, product_name, call_id. Порядок по product_id.

В работе: Оценка продаж через колл-центр: какие продукты оформили прямо на звонке.

Таблицы

calls — звонки

КолонкаТипЧто значит
call_idintключ
client_idintклиент
start_attimestampначало
end_attimestampконец, NULL если не приняли

products — открытые продукты

КолонкаТипЧто значит
product_idintключ
client_idintклиент
product_nametextпродукт
opened_attimestampмомент открытия

Пример: данные

calls · 3 строки

call_idclient_idstart_atend_at
1102025-10-05T10:00:002025-10-05T10:20:00
2112025-10-05T11:00:00NULL
3122025-10-05T12:00:002025-10-05T12:30:00

products · 4 строки

product_idclient_idproduct_nameopened_at
10010Кредитная карта Платинум2025-10-05T10:12:00
10110Вклад СмартВклад2025-10-05T18:00:00
10211Дебетовая карта Блэк2025-10-05T11:05:00
10313Страховка путешественника2025-10-05T12:10:00

Ожидаемый ответ

product_idclient_idproduct_namecall_id
10010Кредитная карта Платинум1
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
product_id, client_id, product_name, call_id
JOINдатыNULL

Источник: тестовое задание продуктового аналитика Т-Банка (опубликовано на No Data No Growth). Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.