homework, pet project DE Dmitry_Medvedev #1

Open
dmitry_medvedev wants to merge 264 commits from md_branch into main
Showing only changes of commit 9a3e660595 - Show all commits
@@ -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(сделал пометку в коде), это нужно чтобы точно проверить, что урок который посмотрел пользователь точно принадлежит его курсу, чтобы избежать ошибок из-за некорректных данные если такие появятся в результате какого либо сбоя или ошибки.