**Контекст:** Стриминговый сервис записывает каждое действие пользователя. **Сессия** — последовательность событий одного пользователя, между которыми прошло не более 30 минут. Перерыв > 30 минут означает начало новой сессии.
**Данные:**
[см. код в задании]
**Задание:**
Для каждого пользователя посчитайте (за последние 7 дней):
1. Количество сессий
2. Среднюю длительность сессии в минутах
3. Максимальную длительность сессии
Выведите топ-20 пользователей по количеству сессий.
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE stream_events (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
event_type VARCHAR(50) NOT NULL, -- 'play', 'pause', 'seek', 'stop'
event_ts TIMESTAMP NOT NULL
);
LAG window functions сессии gap detection
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: LAG, window functions, сессии, gap detection.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания