Files
homework/skonev/greenplum/STEP4.3_dm.course_completion_rate.sql
T
2025-12-23 21:03:02 +03:00

39 lines
1.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/#
- ВИТРИНА ДЛЯ АНАЛИЗА КОНВЕРСИИ ПРОХОЖДЕНИЯ КУРСА ПОЛЬЗОВАТЕЛЯМИ
- ИТОГОВОЕ РАСПРЕДЕЛЕНИЕ ПО (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);