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

95. Поисковые сессии: разрыв больше 30 минут

Сложная

В events — поисковые запросы пользователей. Сессия — цепочка запросов, где пауза между соседними не больше 30 минут. Пауза больше 30 минут начинает новую сессию; ровно 30 минут — та же сессия.

Логгер иногда пишет один запрос дважды с одинаковым временем.

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

В работе: Метрики вовлечённости: сколько раз в день человек возвращается в поиск.

Таблицы

events — один поисковый запрос; возможны дубли

КолонкаТипЧто значит
user_idintпользователь
event_attimestampвремя запроса
querytextтекст запроса

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

events · 7 строк

user_idevent_atquery
12026-04-10T09:00:00такси до аэропорта
12026-04-10T09:12:00толмачёво табло
12026-04-10T09:20:00погода новосибирск
12026-04-10T11:00:00обед рядом
22026-04-10T20:00:00сериалы октябрь
22026-04-10T21:05:00кинопоиск премьеры
22026-04-10T21:30:00трейлер дюна

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

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

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

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