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

47. Траты по карте за скользящие 7 суток

Средняя

В card_tx — списания по карте Ozon Банка. Антифрод проверяет: сколько клиент потратил за последние 7 суток, включая текущую операцию. В окно попадают операции с tx_at от «текущая минус 7 суток» включительно до текущей; операции в ту же секунду тоже входят.

Верните операции, на которых эта сумма больше 150 000 ₽: tx_id, client_id, tx_at, sum_7d. Порядок — по tx_id.

В работе: Правило антифрода и лимиты: резкий рост трат за неделю — повод проверить операцию.

Таблицы

card_tx — списания по карте

КолонкаТипЧто значит
tx_idintключ
client_idintклиент
tx_attimestampвремя
amount_rubnumericсумма

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

card_tx · 6 строк

tx_idclient_idtx_atamount_rub
172026-02-01T10:00:0060000
272026-02-03T12:00:0045000
372026-02-05T18:30:0052000
472026-02-12T09:00:0020000
582026-02-02T10:00:00149999
682026-02-02T10:05:002

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

tx_idclient_idtx_atsum_7d
372026-02-05T18:30:00157000
682026-02-02T10:05:00150001
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
tx_id, client_id, tx_at, sum_7d
оконные функциидаты

Источник: на данных Ozon Банка: операции по карте. Условие пересказано своими словами.

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