homework, pet project DE Dmitry_Medvedev #1

Open
dmitry_medvedev wants to merge 264 commits from md_branch into main
Showing only changes of commit 3b9c6393df - Show all commits
@@ -0,0 +1,41 @@
CREATE MATERIALIZED VIEW course_summary AS
WITH courses_unique_users AS (
SELECT
e.course_id,
count(e.user_id) AS unique_users
FROM
enrollments e
GROUP BY
e.course_id
),
lessons_results AS (
SELECT
l.course_id,
count(distinct l.id) AS lessons_count,
count(lv.lesson_id) AS total_views,
min(lv.viewed_at)::date AS first_viewed_at,
max(lv.viewed_at)::date AS last_viewed_at
FROM
lessons l
LEFT JOIN
lesson_views lv ON l.id = lv.lesson_id
GROUP BY
l.course_id
)
SELECT
c.id AS course_id,
c.title AS course_title,
cuu.unique_users,
lr.lessons_count,
lr.total_views,
round(lr.total_views / cuu.unique_users::numeric, 2) AS avg_views_per_user,
lr.first_viewed_at,
lr.last_viewed_at
FROM
courses c
JOIN
courses_unique_users cuu ON c.id = cuu.course_id
JOIN
lessons_results lr ON c.id = lr.course_id
ORDER BY
c.id;