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

24. Сессии просмотров с разрывом 30 минут

Сложная

В views — просмотры карточек. Сессия пользователя заканчивается, если до следующего просмотра прошло больше 30 минут; пауза ровно 30 минут сессию не разрывает. Сессия может переходить через полночь. Иногда один просмотр записан дважды с одинаковым временем — это всё равно один и тот же момент в сессии.

Для каждого пользователя верните user_id, sessions — число сессий, max_views — наибольшее число строк просмотров в одной сессии (дубли считаем как есть). Порядок — по user_id.

В работе: Продуктовые метрики поиска: сколько объявлений человек листает за один заход.

Таблицы

views — одна строка — один просмотр

КолонкаТипЧто значит
view_idintключ
user_idintпользователь
listing_idintобъявление
viewed_attimestampвремя

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

views · 6 строк

view_iduser_idlisting_idviewed_at
110150012026-07-01T10:00:00
210150022026-07-01T10:10:00
310150032026-07-01T10:25:00
410150042026-07-01T12:00:00
510250012026-07-01T09:00:00
610250052026-07-01T09:20:00

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

user_idsessionsmax_views
10123
10212
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, sessions, max_views
сессииоконные функциинарастающий итог

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

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