39 lines
1.0 KiB
SQL
39 lines
1.0 KiB
SQL
/#
|
||
- ВИТРИНА ДЛЯ АНАЛИЗА КОНВЕРСИИ ПРОХОЖДЕНИЯ КУРСА ПОЛЬЗОВАТЕЛЯМИ
|
||
- ИТОГОВОЕ РАСПРЕДЕЛЕНИЕ ПО (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); |