CREATE MATERIALIZED VIEW platform_summary AS
with users_counts as (
					select 
					COUNT(distinct u.id) as total_users,
					COUNT(distinct lv.user_id) as users_with_views
					from users u
					left join lesson_views lv on lv.user_id = u.id
					),
courses_lessons_count as (
					select COUNT(distinct c.id) as total_courses,
					COUNT(distinct l.id) as total_lessons
					from courses c
					left join lessons l on l.course_id = c.id
					),
views_count as (
				select COUNT(distinct lv.lesson_id) as lessons_with_views,
				COUNT(distinct lv.id) as total_views
				from lesson_views lv
				)
select uc.total_users, clc.total_courses, clc.total_lessons, uc.users_with_views,
ROUND(1.00 * clc.total_lessons / nullif(clc.total_courses, 0), 2) as avg_lessons_per_course,
ROUND(1.00 * vc.total_views / nullif(clc.total_lessons, 0), 2) as avg_views_per_lesson
from users_counts uc
cross join courses_lessons_count clc
cross join views_count vc
;