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

6. Просрочка в первые 60 дней после выдачи

Средняя

В loans — выданные кредиты наличными, в overdue_events — моменты, когда платёж по кредиту ушёл в просрочку (overdue_from, первый день просрочки). У кредита может быть несколько таких событий.

Для каждого месяца выдачи посчитайте: issued — сколько кредитов выдано, overdue_60 — у скольких первая просрочка случилась не позже 60-го дня после выдачи (overdue_from <= issued_on + 60), и overdue_pct — их долю в процентах с 1 знаком.

Месяц выдачи — issue_month, первое число месяца. Месяцы без просрочек тоже нужны, с нулём. Порядок — по issue_month.

В работе: Ранний сигнал для риск-аналитика: какой месяц выдач оказался хуже и не пора ли ужесточить скоринг.

Таблицы

loans — выданные кредиты

КолонкаТипЧто значит
loan_idintключ
client_idintклиент
issued_ondateдата выдачи
amount_rubnumericсумма, ₽

overdue_events — выходы в просрочку

КолонкаТипЧто значит
event_idintключ
loan_idintкредит
overdue_fromdateпервый день просрочки

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

loans · 5 строк

loan_idclient_idissued_onamount_rub
15012025-01-10300000
25022025-01-15150000
35032025-01-28500000
45042025-02-03200000
55052025-02-2090000

overdue_events · 4 строки

event_idloan_idoverdue_from
112025-01-30
222025-04-15
352025-03-27
452025-04-11

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

issue_monthissuedoverdue_60overdue_pct
2025-01-013133,3
2025-02-012150
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
issue_month, issued, overdue_60, overdue_pct
LEFT JOINусловная агрегациядатыNULL

Источник: на данных кредитного конвейера: выдачи и выходы в просрочку. Условие пересказано своими словами.

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