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

237. Первые, вторые и следующие кредиты по месяцам

Средняя

В loans — кредитные договоры: клиент, дата оформления и сумма. Первым договором клиента называем самый ранний за всю историю, следующий — вторым. Если два договора оформлены в один день, раньше тот, у которого меньше loan_id.

Сведите выдачи по месяцам: для каждого месяца и порядкового номера договора — число договоров loans и сумму amount_rub. Третий, четвёртый и дальнейшие договоры идут одной группой с loan_no = 3.

Верните month (первое число месяца), loan_no, loans, amount_rub, порядок — month, loan_no.

В работе: Отчёт о повторных продажах кредитов: какая доля выдач приходится на клиентов, которые уже брали у банка.

Таблицы

loans — одна строка — один договор

КолонкаТипЧто значит
loan_idintключ
client_idintклиент
loan_datedateдата оформления
loan_amountnumericсумма, ₽

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

loans · 7 строк

loan_idclient_idloan_dateloan_amount
112025-01-15300000
212025-02-03150000
312025-02-0350000
412025-03-10700000
522025-02-201200000
622025-03-01250000
732025-03-0590000

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

monthloan_noloansamount_rub
2025-01-0111300000
2025-02-01111200000
2025-02-0121150000
2025-02-013150000
2025-03-011190000
2025-03-0121250000
2025-03-0131700000
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
month, loan_no, loans, amount_rub
оконные функцииGROUP BYдаты

Источник: тестовое аналитика данных (Middle) в Сбере, сборник No Data No Growth. Условие пересказано своими словами.