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

51. Спящие клиенты за 90 дней

Лёгкая

Отчётная дата — 1 апреля 2026 года. В transactions лежат операции по картам по 31 марта включительно. У части входящих переводов из других банков клиент не определён — client_id в них NULL.

Найдите спящих клиентов: у них нет ни одной операции с 1 января 2026 года 00:00 (это ровно 90 дней до отчётной даты). Клиентов, открывших счёт 1 января 2026 года и позже, не считайте: они просто новые.

Верните client_id, full_name и last_tx_at — время последней операции или NULL, если операций не было. Порядок — по client_id.

В работе: Список для кампании реактивации: кому из спящих позвонить или дать повышенный кешбэк.

Таблицы

clients — клиенты банка

КолонкаТипЧто значит
client_idintключ
full_nametextФИО
citytextгород
opened_atdateдата открытия счёта

transactions — операции по картам, по 31.03.2026 включительно

КолонкаТипЧто значит
tx_idintключ
client_idintклиент, может быть NULL
amount_rubnumericсумма
tx_attimestampвремя операции

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

clients · 4 строки

client_idfull_namecityopened_at
1Анна КовалёваМосква2023-05-10
2Игорь СафинКазань2024-11-02
3Мария ЛебедеваСамара2025-02-14
4Олег НикитинТула2026-02-10

transactions · 3 строки

tx_idclient_idamount_rubtx_at
101115002026-03-15T12:00:00
1022830,52025-11-20T09:30:00
103242002025-08-02T18:10:00

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

client_idfull_namelast_tx_at
2Игорь Сафин2025-11-20T09:30:00
3Мария ЛебедеваNULL
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, full_name, last_tx_at
антиджойнLEFT JOINNULLдаты

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

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