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

71. Антифрод: три перевода за 10 минут

Сложная

В transfers — исходящие переводы клиентов. Правило антифрода срабатывает, когда у клиента набирается 3 и больше перевода в любом окне длиной 10 минут: перевод в момент t и все его переводы в промежутке [t − 10 минут; t].

Для каждого клиента, у которого правило сработало, верните client_id и alert_at — время перевода, на котором оно сработало впервые. Порядок по client_id.

В работе: Проверка нового правила антифрода на истории: сколько клиентов оно бы остановило и когда.

Таблицы

transfers — исходящие переводы

КолонкаТипЧто значит
transfer_idintключ
client_idintклиент
sent_attimestampвремя перевода
amount_rubnumericсумма, ₽
recipienttextполучатель

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

transfers · 10 строк

transfer_idclient_idsent_atamount_rubrecipient
112026-02-10T12:01:0015000+7 912 ***-41-07
212026-02-10T12:04:0015000+7 913 ***-22-90
312026-02-10T12:09:0014500+7 914 ***-03-55
412026-02-10T12:12:009000+7 915 ***-77-12
522026-02-10T10:00:00500Ольга П.
622026-02-10T10:15:00700Ольга П.
722026-02-10T10:31:00300Артём В.
832026-02-10T23:55:0020000ИП Сафин
932026-02-10T23:58:0020000ИП Сафин
1032026-02-11T00:03:0020000ИП Сафин

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

client_idalert_at
12026-02-10T12:09:00
32026-02-11T00:03:00
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, alert_at
оконные функциидатыподзапрос

Источник: на данных Т-Банка: исходящие переводы и правило антифрода. Условие пересказано своими словами.

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