В transfers — переводы клиентов. В app_installs — установки мобильного приложения: installed_at, uninstalled_at (пусто, если стоит сейчас) и app_version. Обновление выглядит как удаление старой версии и установка новой в ту же секунду.
Для каждого перевода определите версию приложения, которая стояла у клиента в момент sent_at: установка активна, если installed_at <= sent_at < uninstalled_at или удаления не было.
Если активных установок несколько (телефон и планшет), берите самую позднюю по installed_at, при равенстве — с большим install_id. Если приложения не было, версия пустая. Верните transfer_id, client_id, app_version по порядку transfer_id.
В работе: Разбор жалоб на ошибку перевода: какая версия приложения была у клиента.
Таблицы
transfers — переводы
| Колонка | Тип | Что значит |
|---|---|---|
transfer_id | int | ключ |
client_id | int | клиент |
sent_at | timestamp | время перевода |
amount_rub | numeric | сумма, ₽ |
app_installs — история установок приложения
| Колонка | Тип | Что значит |
|---|---|---|
install_id | int | ключ |
client_id | int | клиент |
installed_at | timestamp | установка |
uninstalled_at | timestamp | удаление, NULL если стоит |
app_version | text | версия |
Пример: данные
transfers · 5 строк
| transfer_id | client_id | sent_at | amount_rub |
|---|---|---|---|
| 100 | 10 | 2025-12-30T19:20:00 | 1500 |
| 101 | 10 | 2026-01-15T12:00:00 | 700 |
| 102 | 10 | 2026-02-01T08:00:00 | 12000 |
| 103 | 20 | 2025-11-10T13:00:00 | 3000 |
| 104 | 30 | 2026-01-20T10:00:00 | 250 |
app_installs · 3 строки
| install_id | client_id | installed_at | uninstalled_at | app_version |
|---|---|---|---|---|
| 1 | 10 | 2025-09-01T10:00:00 | 2026-01-15T12:00:00 | 6.1 |
| 2 | 10 | 2026-01-15T12:00:00 | NULL | 6.4 |
| 3 | 20 | 2025-10-01T09:00:00 | 2025-11-01T09:00:00 | 6.2 |
Ожидаемый ответ
| transfer_id | client_id | app_version |
|---|---|---|
| 100 | 10 | 6.1 |
| 101 | 10 | 6.4 |
| 102 | 10 | 6.4 |
| 103 | 20 | NULL |
| 104 | 30 | NULL |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
transfer_id, client_id, app_version
Источник: разбор технического интервью аналитика данных в Т-Банке, 2025. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.