создал витрину 'Активность пользователей'

This commit is contained in:
mnoskov
2026-03-17 22:52:04 +03:00
parent f9db7e0b84
commit 9a3e660595
@@ -0,0 +1,24 @@
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)::date AS last_view,
min(lv.viewed_at)::date AS first_view,
((count(DISTINCT lv.lesson_id)::numeric(5,2) / count(DISTINCT l.id)) * 100)::numeric(5, 2) AS engagement_rate
FROM
users u
JOIN
enrollments e ON u.id = e.user_id
JOIN
courses c ON e.course_id = c.id
JOIN
lessons l ON c.id = l.course_id
LEFT JOIN
lesson_views lv ON u.id = lv.user_id -- сюда - 'AND l.id = lv.lesson_id'
GROUP BY
u.id, u.name
ORDER BY
u.id;
-- Кинул его в нейронку на проверку, она сказала что надо добавить 'AND l.id = lv.lesson_id' при присоединении таблицы lesson_views(сделал пометку в коде), это нужно чтобы точно проверить, что урок который посмотрел пользователь точно принадлежит его курсу, чтобы избежать ошибок из-за некорректных данные если такие появятся в результате какого либо сбоя или ошибки.