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

236. Покупки одежды с датой первой покупки

Лёгкая

В purchases — покупки в магазине: пользователь, товар, категория (одежда, техника, книги…) и дата event_date.

Выведите покупки категории одежда и к каждой добавьте first_purchase_date — дату самой первой покупки пользователя в любой категории — и флаг is_2023: 1 для покупок 2023 года, 0 — для более ранних, NULL — для поздних, их флаг не описывает.

Верните user_id, item_id, event_date, first_purchase_date, is_2023, порядок — user_id, event_date, item_id.

В работе: Подготовка выборки для анализа: пришёл ли покупатель одежды в магазин ради неё или раньше брал другое.

Таблицы

purchases — одна строка — одна покупка товара

КолонкаТипЧто значит
purchase_idintключ
user_idintпользователь
item_idintтовар
categorytextкатегория
event_datedateдата покупки

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

purchases · 6 строк

purchase_iduser_iditem_idcategoryevent_date
15019001техника2022-11-28
25017002одежда2023-03-08
35017010одежда2024-01-15
45027002одежда2022-12-31
55029100книги2023-01-01
65038800техника2023-06-01

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

user_iditem_idevent_datefirst_purchase_dateis_2023
50170022023-03-082022-11-281
50170102024-01-152022-11-28NULL
50270022022-12-312022-12-310
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, item_id, event_date, first_purchase_date, is_2023
оконные функциидатыNULL

Источник: тестовое стажёра-продуктового аналитика во ВКонтакте, сборник No Data No Growth. Условие пересказано своими словами.