16 lines
596 B
SQL
16 lines
596 B
SQL
CREATE MATERIALIZED VIEW user_activity_summary AS
|
|
SELECT
|
|
u.id AS user_id,
|
|
u.name,
|
|
COUNT(DISTINCT e.course_id) AS enrollment_count,
|
|
COUNT(DISTINCT lv.lesson_id) AS viewed_lessons_count,
|
|
MAX(lv.viewed_at) AS last_viewed,
|
|
MIN(lv.viewed_at) AS first_viewed,
|
|
ROUND (COUNT(DISTINCT lv.lesson_id) * 1.0 / NULLIF(COUNT(DISTINCT l.id), 0) * 100, 2) AS "engagement_rate(%)"
|
|
FROM amaksatov.users u
|
|
LEFT JOIN enrollments e ON e.user_id = u.id
|
|
LEFT JOIN lessons l ON l.course_id = e.course_id
|
|
LEFT JOIN lesson_views lv ON lv.lesson_id = l.id AND u.id = lv.user_id
|
|
GROUP BY u.id;
|
|
|