SQL Gym Pro #1 💪
Ну что, вот и вечер пятницы, а значит пора на тренировку! Начинаем разминку!
Сегодня разберем задачку, которая на собесах встречается чаще, чем вопрос "расскажите о себе" - расчет Retention Rate. 😎 Ситуация
У вас есть таблица с активностью пользователей в приложении. Продакт хочет понять, сколько людей, которые зарегистрировались в январе, вернулись на 7-й и 30-й день после регистрации.
Таблица user_activity user_id | activity_date --------|--------------- 101 | 2024-01-15 101 | 2024-01-22 101 | 2024-02-14 102 | 2024-01-15 102 | 2024-01-16 103 | 2024-01-20 103 | 2024-01-27
🥴****Задача
Напишите запрос, который посчитает:
- Сколько пользователей зарегистрировалось в январе 2024
- Сколько из них вернулись на 7-й день (± 1 день, т.е. между 6 и 8 днями)
- Сколько вернулись на 30-й день (± 1 день, т.е. между 29 и 31 днём)
- Retention Rate для каждого периода в процентах
😈****Усложнение А если нужно посчитать не просто "вернулись хоть раз", а "были активны минимум 2 дня на этой неделе"?
⚠️****Подсказки Если застряли - подумайте про:
MIN()для определения даты регистрацииDATE_DIFF()илиDATEDIFF()для расчета разницы в дняхCASE WHENдля группировки по периодам- Самосоединение таблицы может быть вашим другом
Пишите свои решения в комментах! Посмотрим, кто найдет самый элегантный вариант. А через пару дней скину свое решение с разбором 😉
И да, если у вас другой подход - тоже делитесь! В SQL дорог много, главное чтобы результат был правильный (и желательно быстрый 😄).