From 94965703a3b654073392ddd109b982f07bcd3c11 Mon Sep 17 00:00:00 2001 From: Dmitry Medvedev Date: Sat, 20 Jun 2026 14:13:21 +0500 Subject: [PATCH] added matherialized view pet project platform summary --- .../11.2 Pet project Effective courses.sql | 3 +-- .../11.3 Pet project platform_summary.sql | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 dmedvedev/11.3 Pet project platform_summary.sql diff --git a/dmedvedev/11.2 Pet project Effective courses.sql b/dmedvedev/11.2 Pet project Effective courses.sql index 1d8b00f..024b877 100644 --- a/dmedvedev/11.2 Pet project Effective courses.sql +++ b/dmedvedev/11.2 Pet project Effective courses.sql @@ -79,5 +79,4 @@ LEFT JOIN first_viewed_at fva ON fva.id = pc.id LEFT JOIN last_viewed_at lva ON lva.id = pc.id GROUP BY pc.id, uu.unique_users, lc.lesson_count, tv.total_views, first_viewed_at, last_viewed_at -ORDER BY course_id - +ORDER BY course_id; \ No newline at end of file diff --git a/dmedvedev/11.3 Pet project platform_summary.sql b/dmedvedev/11.3 Pet project platform_summary.sql new file mode 100644 index 0000000..dc557c9 --- /dev/null +++ b/dmedvedev/11.3 Pet project platform_summary.sql @@ -0,0 +1,20 @@ +CREATE MATERIALIZED VIEW platform_summary AS + +WITH stats AS ( + SELECT + (SELECT COUNT(*) total_users FROM pet_users pu) AS total_users, + (SELECT COUNT(*) total_courses FROM pet_courses pc) AS total_courses, + (SELECT COUNT(*) total_lessons FROM pet_lessons pl) AS total_lessons, + (SELECT COUNT(DISTINCT user_id) FROM pet_lesson_views plv) AS users_with_views, + (SELECT COUNT(*) FROM pet_lesson_views plv) AS total_views +) + +SELECT + total_users, + total_courses, + total_lessons, + users_with_views, + + ROUND((total_lessons * 1.0 / total_courses), 2) AS avg_lessons_per_course, + ROUND((total_views * 1.0 / total_lessons), 2) AS avg_views_per_lesson +FROM stats; \ No newline at end of file