CREATE MATERIALIZED VIEW lesson_popularity_summary ENGINE = SummingMergeTree() ORDER BY (course_id, lesson_id) AS SELECT lv.lesson_id as lesson_id, l.title as lesson_title, lv.course_id as course_id, c.title as course_title, count() as total_views, uniq(lv.user_id) as unique_users, min(lv.viewed_at) as first_view, max(lv.viewed_at) as last_view FROM fact_lesson_views lv LEFT JOIN dim_lesson l ON lv.lesson_id = l.lesson_id LEFT JOIN dim_course c ON lv.course_id = c.course_id GROUP BY lv.lesson_id, l.title, lv.course_id, c.title;