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;