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

10. Сессии в мобильном приложении

Сложная

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

Длительность сессии — минуты от первого до последнего события (сессия из одного события длится 0 минут). События иногда пишутся дважды с одним временем.

Для каждого пользователя верните user_id, sessions и avg_minutes — среднюю длительность сессии с 1 знаком. Порядок — по user_id.

В работе: Продуктовый отчёт: как часто и как долго клиенты заходят в приложение после редизайна главного экрана.

Таблицы

app_events — одна строка — открытие экрана

КолонкаТипЧто значит
user_idintпользователь
event_attimestampвремя события
screentextэкран: главная, платежи, переводы, кешбэк

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

app_events · 6 строк

user_idevent_atscreen
1012025-11-05T09:00:00главная
1012025-11-05T09:10:00платежи
1012025-11-05T09:25:00главная
1012025-11-05T13:00:00переводы
1012025-11-05T13:04:00главная
1022025-11-05T20:00:00кешбэк

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

user_idsessionsavg_minutes
101214,5
10210
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, sessions, avg_minutes
сессииоконные функцииCTEдедупликациядаты

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

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