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

218. Текущая серия зарплатных месяцев

Сложная

В salary_credits — зачисления зарплаты от работодателей. Месяц считается зарплатным, если в нём было хотя бы одно зачисление: аванс и основная часть в одном месяце — это один месяц. Выгрузку сделали 3 октября 2026, поэтому в ней уже есть октябрьские авансы.

Отчётный месяц — сентябрь 2026. Найдите клиентов, у которых текущая серия зарплатных месяцев подряд заканчивается сентябрём и длится не меньше 3 месяцев. Верните client_id и streak_months — длину этой серии. Октябрь 2026 не учитывайте. Порядок — по streak_months по убыванию, затем по client_id.

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

Таблицы

salary_credits — одна строка — одно зачисление зарплаты

КолонкаТипЧто значит
credit_idintключ
client_idintклиент
credited_atdateдата зачисления
amount_rubnumericсумма

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

salary_credits · 11 строк

credit_idclient_idcredited_atamount_rub
112026-06-1065000
212026-07-1065000
312026-08-1065000
412026-09-1065000
522026-05-0590000
622026-06-0590000
722026-07-0590000
822026-09-0590000
932026-07-2548000
1032026-08-2548000
1132026-09-2548000

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

client_idstreak_months
14
33
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, streak_months
пропуски и островаоконные функциирекурсивный CTEDISTINCTдаты

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