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

30. Траты клиентов за последние 30 дней

Лёгкая

Отчёт строится на утро 1 марта 2026 года. Для каждого клиента из clients посчитайте сумму покупок (transact.sum_tran) за последние 30 дней: с 00:00 30 января 2026 года до 00:00 1 марта.

Клиенты без покупок за период тоже нужны, с суммой 0. Верните client_id, full_name, spent_rub; порядок — по spent_rub убыванию, при равенстве по client_id.

В работе: Отбор клиентов МТС Банка под предложение кешбэка: кто сейчас активно пользуется картой.

Таблицы

clients — клиенты МТС Банка

КолонкаТипЧто значит
client_idintключ
full_nametextимя

transact — одна строка — одна покупка по карте

КолонкаТипЧто значит
id_tranintключ
id_clientintклиент
tran_timetimestampвремя
sum_trannumericсумма, ₽

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

clients · 3 строки

client_idfull_name
1Карина Абрамова
2Степан Голубев
3Эльвира Насибуллина

transact · 4 строки

id_tranid_clienttran_timesum_tran
112026-02-10T12:00:003500
212026-02-25T19:30:001200
322026-02-01T08:00:00890
422026-01-15T10:00:0015000

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

client_idfull_namespent_rub
1Карина Абрамова4700
2Степан Голубев890
3Эльвира Насибуллина0
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, full_name, spent_rub
LEFT JOINNULLGROUP BYдаты

Источник: тестовое продуктового аналитика МТС, сборник No Data No Growth. Условие пересказано своими словами.

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