homework, pet project DE Dmitry_Medvedev #1
+24
@@ -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(сделал пометку в коде), это нужно чтобы точно проверить, что урок который посмотрел пользователь точно принадлежит его курсу, чтобы избежать ошибок из-за некорректных данные если такие появятся в результате какого либо сбоя или ошибки.
|
||||
Reference in New Issue
Block a user