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

63. Сколько клиент внёс через банкомат за месяц

Лёгкая

В user_money — все движения денег по картам. money_movement со знаком: плюс — деньги пришли, минус — ушли. movement_type = atm у операций в банкомате — и внесения наличных, и снятия.

Посчитайте, сколько каждый клиент внёс через банкомат в каждом календарном месяце: client_id, month (первое число месяца), deposited_rub.

Месяцы без внесений не показывайте. Порядок: client_id, затем month.

В работе: Отчёт для сети банкоматов: где и когда клиенты вносят наличные.

Таблицы

user_money — движения денег по картам: плюс — пополнение, минус — списание

КолонкаТипЧто значит
op_idintключ
op_attimestampвремя операции
client_idintклиент
money_movementintсумма, ₽, со знаком
movement_typetextatm / transfer / purchase / salary

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

user_money · 7 строк

op_idop_atclient_idmoney_movementmovement_type
12026-02-03T10:15:0050115000atm
22026-02-10T18:40:00501-5000atm
32026-02-20T12:00:005017000atm
42026-02-25T09:00:0050145000salary
52026-03-01T11:30:005013000atm
62026-02-14T14:00:0050220000atm
72026-02-14T14:05:00502-1200purchase

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

client_idmonthdeposited_rub
5012026-02-0122000
5012026-03-013000
5022026-02-0120000
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, month, deposited_rub
GROUP BYдаты

Источник: разбор технического интервью аналитика данных в Т-Банке, 2025. Условие пересказано своими словами.

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