added STEP 1, 3, 4.3

This commit is contained in:
SERGEY_KONEV
2025-12-23 21:03:02 +03:00
parent 53398bc3ad
commit b9c57af980
4 changed files with 183 additions and 0 deletions
@@ -0,0 +1,39 @@
/#
- ВИТРИНА ДЛЯ АНАЛИЗА КОНВЕРСИИ ПРОХОЖДЕНИЯ КУРСА ПОЛЬЗОВАТЕЛЯМИ
- ИТОГОВОЕ РАСПРЕДЕЛЕНИЕ ПО (user_id, course_id)
#/
CREATE MATERIALIZED VIEW dm.course_completion_rate AS
WITH t1 AS (
SELECT DISTINCT
e.user_id,
du.name AS user_name,
e.course_id,
dc.title AS course_title,
COUNT(DISTINCT dl.lesson_id) AS lessons_in_course
FROM core.enrollments e
JOIN core.dim_user du USING (user_id)
JOIN core.dim_course dc USING (course_id)
LEFT JOIN core.dim_lesson dl USING (course_id)
GROUP BY user_id, du.name, course_id, dc.title
),
t2 AS (
SELECT
user_id,
course_id,
COUNT(lesson_id) AS lessons_viewed
FROM core.fact_lesson_views
GROUP BY user_id, course_id
)
SELECT
t1.user_id,
t1.user_name,
t1.course_id,
t1.course_title,
t1.lessons_in_course,
COALESCE(t2.lessons_viewed, 0) AS lessons_viewed,
COALESCE(ROUND(lessons_viewed::DECIMAL / NULLIF(lessons_in_course, 0), 2), 0) AS completion_rate
FROM t1
LEFT JOIN t2 USING (user_id, course_id)
DISTRIBUTED BY (user_id, course_id);