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

32. Месяц с наибольшим отклонением расходов

Сложная

В charges — списания со счёта абонента. Возьмите шесть месяцев: апрель–сентябрь 2026 года. Для каждого абонента из subscribers посчитайте расход по каждому из шести месяцев; месяц без списаний — это 0 ₽.

Среднемесячный расход — среднее по всем шести месяцам. Найдите месяц, где расход сильнее всего отличается от среднего в любую сторону; при равенстве берите более ранний месяц.

Верните msisdn, avg_month_rub (2 знака), max_dev_month (первое число месяца) и deviation_rub — расход месяца минус среднее, 2 знака. Порядок — по msisdn.

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

Таблицы

subscribers — абоненты

КолонкаТипЧто значит
msisdntextномер
regiontextрегион

charges — списания

КолонкаТипЧто значит
charge_idintключ
msisdntextномер
charged_attimestampвремя
amount_rubnumericсумма, ₽

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

subscribers · 2 строки

msisdnregion
79161234567Москва
79035550011Тверская область

charges · 11 строк

charge_idmsisdncharged_atamount_rub
1791612345672026-04-05T00:00:00600
2791612345672026-05-05T00:00:00600
3791612345672026-06-05T00:00:00600
4791612345672026-07-05T00:00:00600
5791612345672026-08-05T00:00:001800
6791612345672026-09-05T00:00:00600
7790355500112026-04-10T00:00:00500
8790355500112026-05-10T00:00:00500
9790355500112026-07-10T00:00:00500
10790355500112026-08-10T00:00:00500
11790355500112026-09-10T00:00:00500

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

msisdnavg_month_rubmax_dev_monthdeviation_rub
79035550011416,672026-06-01-416,67
791612345678002026-08-011000
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
msisdn, avg_month_rub, max_dev_month, deviation_rub
оконные функцииCTEтоп-N в группедатыNULL

Источник: разбор собеседования аналитика в МТС, Карьерник, 2026. Условие пересказано своими словами.

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