17 lines
1.1 KiB
SQL
17 lines
1.1 KiB
SQL
|
||
CREATE MATERIALIZED VIEW user_activity_summary AS
|
||
SELECT
|
||
u.id AS user_id, -- user_id
|
||
u.name, -- 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 l.course_id) * 100.0 / COUNT(DISTINCT l.id), 2) || '%' AS engagement_rate -- вовлеченность(процент просмотренных/записанным)
|
||
FROM amaksatov.users u -- основная таблица
|
||
JOIN enrollments e ON e.user_id = u.id -- связь users с enrollments
|
||
LEFT JOIN lesson_views lv ON lv.user_id = e.user_id -- связь lessons с lesson_views
|
||
JOIN lessons l ON l.course_id = e.course_id -- связь уроков с курсами пользователя
|
||
GROUP BY u.id, u.name -- группировка по user_id и name
|
||
ORDER BY user_id; -- сортировка по user_id
|