TGViewer
Заскуль питона (Аналитика данных) Заскуль питона (Аналитика данных) @zasql_python · 8.94K subscribers
Post #283 3.92K
Заскуль питона (Аналитика данных) Где практиковать SQL? 😮 Давно не было постов вообще про SQL. Не знаю даже почему, хотя самый важный инструмент в нашей работе. Представьте, что вы прошли какие-то курсы, примерно понимаете как все решать, знаете основные концепции, но хочется потрогать задачи…
Вы набрали достаточное количество реакций, поэтому привожу 1 кейс - это когортный анализ в SQL.

☕️ Этот подход важен, когда нужно понять, что происходит с пользователями спустя какое-то время после их взаимодействия с продуктом. Например, они пользуются новой фичей или заходят в продукт через 1, 7, 14, 30 дней после регистрации? Когортный анализ помогает ответить на такие вопросы.

🍪🍪 Пример задачи

Допустим, у вас есть продукт, где пользователи регистрируются и совершают действия. Нужно определить, сколько пользователей из каждой когорты (группы, зарегистрированной в один день) возвращаются через разные промежутки времени.

🤔 Что сделаем?

1. Разделим пользователей на когорты по дате регистрации.
2. Посчитаем, сколько пользователей из каждой когорты совершили хотя бы одно действие через 0, 1, 7, 14 и 30 дней.
3. Рассчитаем удержание в процентах относительно размера когорты.


with cohort_base as (
select
u.user_id,
date(u.registration_date) as cohort_date,
datediff(e.event_date, u.registration_date) as days_since_registration
from users u
left join events e
on u.user_id = e.user_id
where e.event_date is not null
),
cohort_activity as (
select
cohort_date,
days_since_registration,
count(distinct user_id) as active_users
from cohort_base
where days_since_registration between 0 and 30
group by cohort_date, days_since_registration
),
cohort_size as (
select
date(registration_date) as cohort_date,
count(distinct user_id) as cohort_size
from users
group by cohort_date
)
select
ca.cohort_date,
ca.days_since_registration,
round(ca.active_users * 100.0 / cs.cohort_size, 2) as retention_rate
from cohort_activity ca
join cohort_size cs
on ca.cohort_date = cs.cohort_date
order by ca.cohort_date, ca.days_since_registration;


😱 Что делает этот запрос?

cohort_base - объединяем таблицу пользователей и таблицу событий, чтобы определить, на какой день с момента регистрации пользователь совершил событие.

cohort_activity - считаем количество уникальных пользователей, которые были активны через 0, 1, 7, 14 и 30 дней после регистрации, для каждой когорты.

cohort_size - определяем размер каждой когорты — количество пользователей, зарегистрировавшихся в конкретный день.

🐸 Рассчитываем удержание (retention_rate) как процент активных пользователей от общего числа зарегистрированных в когорте.

Можно выявить, как изменения в продукте (новая фича, интерфейс) влияют на удержание пользователей. Если retention сильно падает после первых дней, это сигнал, что пользователи теряют интерес или сталкиваются с трудностями.

Обратная задача рассчитать Churn Rate, нужно просто сделать 1 - Retention Rate

Если наберется 100 🐳, выложу еще пост с практическим применением SQL, есть еще что рассказать 🔥
  • 🐳 88
  • 👍 4
  • 🤓 2
More from @zasql_python
  1. Sep 20, 2026Хэй, чемпион! тут курс вышел бесплатный по статистике, который будет дополняться, записыва…
  2. Sep 15, 2026Починилось 😏 zasqlpython.ru
  3. Sep 15, 2026Сайт пока не работает, ждём 30 минут… @zasql_python
  4. Sep 13, 2026😏 Кто сейчас в поисках работы на ПЕРВУЮ работу по специальности аналитиком, что прикладыв…
  5. Sep 11, 2026😌 Пятница а это значит, пора немного поговорить об обновлениях 👀 Что нового на сайте: 😠…
  6. Sep 9, 2026🍌🍌🍌 Hi, unfortunately, we’re not ready to give you more money, but we are ready to give…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →