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

74. Карты без покупки в первые 30 дней

Лёгкая

В cards — выпущенные карты, в card_tx — операции. Тип операции tx_type: purchase, transfer, cash. У оплат по СБП и QR карта не привязывается, card_id пустой.

Карта активирована, если по ней была хотя бы одна покупка в день выпуска или в следующие 30 дней (с issued_at до issued_at + 30 дней включительно, по датам). Переводы и снятия наличных не в счёт.

Найдите карты, выпущенные в 2025 году и не активированные: card_id, client_id, issued_at. Порядок: issued_at, затем card_id.

В работе: Список для коммуникации «карта ждёт первой покупки» и оценка затрат на доставку карт.

Таблицы

cards — выпущенные карты

КолонкаТипЧто значит
card_idintключ
client_idintклиент
issued_atdateдата выпуска
card_typetextтип карты

card_tx — операции, card_id пустой у оплат по СБП

КолонкаТипЧто значит
tx_idintключ
card_idintкарта или NULL
client_idintклиент
tx_typetextpurchase / transfer / cash
amount_rubnumericсумма, ₽
tx_attimestampвремя

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

cards · 5 строк

card_idclient_idissued_atcard_type
11002025-03-01Black
21012025-04-10Black
31022025-05-01Platinum
41032024-12-20Black
51042025-06-01Junior

card_tx · 5 строк

tx_idcard_idclient_idtx_typeamount_rubtx_at
11100purchase5402025-03-10T13:00:00
22101transfer30002025-04-12T09:00:00
33102purchase12902025-05-31T15:00:00
45104purchase1992025-07-02T10:00:00
5NULL101purchase8702025-04-15T19:00:00

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

card_idclient_idissued_at
21012025-04-10
51042025-06-01
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
card_id, client_id, issued_at
антиджойнNULLдаты

Источник: на данных Т-Банка: выпуск карт и операции. Условие пересказано своими словами.

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