homework, pet project DE Dmitry_Medvedev #1
+41
@@ -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;
|
||||
Reference in New Issue
Block a user