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 дорог много, главное чтобы результат был правильный (и желательно быстрый 😄).

SQL Gym Pro #1 💪
Ну что, вот и вечер пятницы, а значит пора на тренировку! Начинаем разминку!
Сегодня разберем задачку, которая на собесах встречается чаще, чем вопрос "расскажите о себе" - расчет Ret... | Сетка — социальная сеть от hh.ru