Условие
Таблица subscriptions(user_id, plan_id, start_date, end_date). end_date может быть NULL (активная подписка).
Постройте когортную таблицу retention за первые 3 месяца для каждой пары (cohort_month, plan_id):
cohort_month—DATE_TRUNC('month', start_date),cohort_size— сколько пользователей в когорте,retention_m1, m2, m3— доля активных в 1-й, 2-й, 3-й месяц послеstart_date.
«Активен в месяце M» = end_date либо NULL, либо >= start_of_month + M.