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

65. Какая версия приложения стояла в момент перевода

Сложная

В 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_idintключ
client_idintклиент
sent_attimestampвремя перевода
amount_rubnumericсумма, ₽

app_installs — история установок приложения

КолонкаТипЧто значит
install_idintключ
client_idintклиент
installed_attimestampустановка
uninstalled_attimestampудаление, NULL если стоит
app_versiontextверсия

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

transfers · 5 строк

transfer_idclient_idsent_atamount_rub
100102025-12-30T19:20:001500
101102026-01-15T12:00:00700
102102026-02-01T08:00:0012000
103202025-11-10T13:00:003000
104302026-01-20T10:00:00250

app_installs · 3 строки

install_idclient_idinstalled_atuninstalled_atapp_version
1102025-09-01T10:00:002026-01-15T12:00:006.1
2102026-01-15T12:00:00NULL6.4
3202025-10-01T09:00:002025-11-01T09:00:006.2

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

transfer_idclient_idapp_version
100106.1
101106.4
102106.4
10320NULL
10430NULL
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
transfer_id, client_id, app_version
LEFT JOINдатыNULLтоп-N в группе

Источник: разбор технического интервью аналитика данных в Т-Банке, 2025. Условие пересказано своими словами.

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