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

8. Главная категория трат клиента за октябрь

Средняя

В card_tx — операции по картам: покупка с положительной суммой, возврат — с отрицательной в той же категории. Для каждого клиента найдите категорию с наибольшими чистыми тратами (покупки минус возвраты) за октябрь 2025.

Категории с чистой суммой 0 и меньше не рассматриваются; клиент без таких категорий в ответ не попадает. При равных суммах берите категорию, которая раньше по алфавиту.

Верните client_id, category, spent_rub; порядок — по client_id.

В работе: Выбор категории повышенного кешбэка, которую предложат клиенту в следующем месяце.

Таблицы

card_tx — одна строка — одна операция

КолонкаТипЧто значит
tx_idintключ
client_idintклиент
categorytextСупермаркеты, Рестораны, АЗС, Такси, Аптеки
amount_rubnumericсумма, ₽; возврат — с минусом
tx_attimestampвремя операции

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

card_tx · 6 строк

tx_idclient_idcategoryamount_rubtx_at
11Супермаркеты42002025-10-02T19:10:00
21Рестораны31002025-10-04T21:00:00
31Супермаркеты28002025-10-11T18:30:00
42АЗС35002025-10-05T08:00:00
52Такси9002025-10-06T23:10:00
62АЗС32002025-10-20T08:15:00

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

client_idcategoryspent_rub
1Супермаркеты7000
2АЗС6700
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, category, spent_rub
топ-N в группеоконные функцииGROUP BYHAVINGдаты

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

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