витрина 'Когортный анализ пользователей' для 'Пет-проект: Онлайн-курсы'
This commit is contained in:
+40
@@ -0,0 +1,40 @@
|
||||
CREATE MATERIALIZED VIEW user_cohort_analysis AS
|
||||
WITH users_and_enrollments_results AS (
|
||||
SELECT
|
||||
date_trunc('month', u.registration_date)::date AS cohort_month,
|
||||
count(DISTINCT u.id) AS users_in_cohort,
|
||||
count(DISTINCT e.user_id) AS enrolled_users,
|
||||
count(DISTINCT e.course_id) courses_in_cohort
|
||||
FROM
|
||||
users u
|
||||
JOIN
|
||||
enrollments e ON u.id = e.user_id
|
||||
GROUP BY
|
||||
cohort_month
|
||||
),
|
||||
lesson_views_results AS (
|
||||
SELECT
|
||||
date_trunc('month', u.registration_date)::date AS cohort_month,
|
||||
count(DISTINCT lv.user_id) AS active_users,
|
||||
round(avg(lv.viewed_at::date - u.registration_date::date), 0) AS avg_time_to_first_view
|
||||
FROM
|
||||
users u
|
||||
LEFT JOIN
|
||||
lesson_views lv ON u.id = lv.user_id
|
||||
GROUP BY
|
||||
cohort_month
|
||||
)
|
||||
SELECT
|
||||
uer.cohort_month,
|
||||
uer.users_in_cohort,
|
||||
uer.enrolled_users,
|
||||
lvr.active_users,
|
||||
round((lvr.active_users / uer.users_in_cohort::numeric) * 100, 2) || '%' AS retention_rate,
|
||||
round(uer.courses_in_cohort / uer.users_in_cohort::numeric, 2) AS avg_courses_per_user,
|
||||
lvr.avg_time_to_first_view
|
||||
FROM
|
||||
users_and_enrollments_results uer
|
||||
JOIN
|
||||
lesson_views_results lvr ON uer.cohort_month = lvr.cohort_month
|
||||
ORDER BY
|
||||
uer.cohort_month;
|
||||
Reference in New Issue
Block a user