1.5Kпросмотров
7 мая 2025 г.
Score: 1.7K
🧠 Задача тех. секции по SQL в одну известную соцсеть Предлагаю попробовать решить не самую тривиальную задачу по оконным функциям в SQL. Оконные функции — одна из самых сложных тем для новичков. Но при этом — одна из самых важных, потому что почти на каждом собеседовании обязательно попадётся задача на ROW_NUMBER(), LAG() или SUM() OVER(). Разберём одну такую задачу, которую дают кандидатам на собеседовании в одну известную социальную сеть. Полезно будет даже для уверенных аналитиков - попробуй решить самостоятельно. 📌 Условие задачи:
У вас есть таблица с событиями пользователей:
user_id | event_time --------|---------------------
101 | 2024-01-01 10:00:00 101 | 2024-01-01 10:10:00 101 | 2024-01-01 11:00:00 102 | 2024-01-01 09:00:00 102 | 2024-01-01 09:45:00 102 | 2024-01-01 12:00:00 Каждое событие — это действие пользователя в приложении (например, просмотр ленты, лайк, сообщение). Нужно разбить последовательность событий каждого пользователя на сессии. Сессия начинается с первого события, и продолжается, пока между событиями не проходит больше 30 минут. Если прошло больше 30 минут — это уже новая сессия. Нужно вернуть таблицу, в которой для каждого события будет указано:
- session_id (уникальный в рамках пользователя)
- время начала сессии
- длительность сессии в минутах
- порядковый номер события внутри сессии. Попробуй решить задачу самостоятельно! Пиши в комментариях «хочу решение», и я отправлю тебе код SQL с подробным решением в личку.