Каждую ночь в balances_daily выгружается остаток на счёте клиента. Иногда выгрузка не отрабатывает, и снимка за день нет.
Найдите дни, когда balance_rub не больше 50 % от остатка ровно 7 календарных дней назад. Если снимка за тот день нет, день не сравниваем. Остаток неделю назад должен быть больше нуля.
Верните client_id, snap_date, balance_week_ago, balance_rub. Порядок — по client_id, затем snap_date.
В работе: Ранний сигнал оттока: клиент выводит деньги в другой банк.
Таблицы
balances_daily — один снимок на клиента в день, бывают пропуски
| Колонка | Тип | Что значит |
|---|---|---|
client_id | int | клиент |
snap_date | date | дата снимка |
balance_rub | numeric | остаток |
Пример: данные
balances_daily · 20 строк
| client_id | snap_date | balance_rub |
|---|---|---|
| 1 | 2026-03-01 | 120000 |
| 1 | 2026-03-02 | 118000 |
| 1 | 2026-03-03 | 90000 |
| 1 | 2026-03-04 | 80000 |
| 1 | 2026-03-05 | 80000 |
| 1 | 2026-03-06 | 80000 |
| 1 | 2026-03-07 | 80000 |
| 1 | 2026-03-08 | 59000 |
| 1 | 2026-03-09 | 60000 |
| 1 | 2026-03-10 | 45000 |
| 2 | 2026-03-01 | 30000 |
| 2 | 2026-03-02 | 30000 |
| 2 | 2026-03-03 | 30000 |
| 2 | 2026-03-04 | 30000 |
| 2 | 2026-03-05 | 30000 |
| 2 | 2026-03-06 | 30000 |
| 2 | 2026-03-07 | 30000 |
| 2 | 2026-03-08 | 30000 |
| 2 | 2026-03-09 | 30000 |
| 2 | 2026-03-10 | 30000 |
Ожидаемый ответ
| client_id | snap_date | balance_week_ago | balance_rub |
|---|---|---|---|
| 1 | 2026-03-08 | 120000 | 59000 |
| 1 | 2026-03-10 | 90000 | 45000 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, snap_date, balance_week_ago, balance_rub
Источник: на данных Сбера, по мотивам открытой подборки вопросов. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.