Сессии по 30-минутным окнам

Middle SQL EdTech

Условие задания

**Контекст:** Задание по мотивам реального тестового в Учи.ру. Продуктовый аналитик строит сессии пользователей: если между двумя событиями прошло более 30 минут — это новая сессия.

**Данные:**

[см. код в задании]

| user_id | event | timest |
|---------|--------------|---------------------|
| 1 | page_view | 2025-03-10 09:00:00 |
| 1 | button_click | 2025-03-10 09:05:00 |
| 1 | page_view | 2025-03-10 09:20:00 |
| 1 | page_view | 2025-03-10 10:15:00 |
| ... | ... | ... |

**Задание:**

1. Разбейте события на сессии: новая сессия начинается, если с предыдущего события прошло > 30 минут
2. Присвойте каждому событию session_id (порядковый номер сессии для данного пользователя)
3. Выведите user_id, event, timest, gap_minutes и session_id

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

Структура для ориентира — реальные значения из эталонного решения.

CREATE TABLE events (
    id SERIAL PRIMARY KEY,
    user_id INT NOT NULL,
    event VARCHAR(100) NOT NULL,
    timest TIMESTAMP NOT NULL
);

INSERT INTO events (user_id, event, timest) VALUES
(1, 'page_view',     '2025-03-10 09:00:00'),
(1, 'button_click',  '2025-03-10 09:05:00'),
(1, 'page_view',     '2025-03-10 09:20:00'),
(1, 'page_view',     '2025-03-10 10:15:00'),
(1, 'button_click',  '2025-03-10 10:20:00'),
(1, 'page_view',     '2025-03-10 14:00:00'),
(2, 'page_view',     '2025-03-10 08:00:00'),
(2, 'button_click',  '2025-03-10 08:10:00'),
(2, 'page_view',     '2025-03-10 08:50:00'),
(2, 'page_view',     '2025-03-10 11:00:00');

Темы

LAG SUM OVER сессионизация оконные функции

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "Сессии по 30-минутным окнам"?

Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: LAG, SUM OVER, сессионизация, оконные функции.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «SQL»?

На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.

← Все задания