PET-project 1st task completed
This commit is contained in:
@@ -200,3 +200,38 @@ VALUES
|
||||
(56, 14, 7, '2023-01-11 10:00:00'),
|
||||
(57, 14, 8, '2023-01-12 11:00:00'),
|
||||
(58, 14, 9, '2023-01-10 08:00:00');
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
-- 1 задание Активные пользователи
|
||||
|
||||
create materialized view user_activity_summary AS
|
||||
with enroll_count as (
|
||||
select u.id as user_id, u.name as user_name,
|
||||
COUNT(e.course_id) as enrollment_count
|
||||
from users u
|
||||
join enrollments e on u.id = e.user_id
|
||||
group by u.id, u.name
|
||||
),
|
||||
viewed_count as (
|
||||
select ec.user_id, ec.user_name, enrollment_count,
|
||||
COUNT(distinct lv.lesson_id) as viewed_lessons_count,
|
||||
MIN(lv.viewed_at) as first_view,
|
||||
MAX(lv.viewed_at) as last_view
|
||||
from enroll_count ec
|
||||
left join lesson_views lv on ec.user_id = lv.user_id
|
||||
group by ec.user_id, ec.user_name, enrollment_count
|
||||
),
|
||||
possible_lessons as (
|
||||
select u.id as user_id, COUNT(l.id) as poss_lessons
|
||||
from users u
|
||||
left join enrollments e on u.id = e.user_id
|
||||
left join lessons l on e.course_id = l.course_id
|
||||
group by u.id
|
||||
)
|
||||
select vc.user_id, user_name, enrollment_count, viewed_lessons_count, first_view, last_view,
|
||||
ROUND(100.0 * viewed_lessons_count / pl.poss_lessons, 2) as engagement_rate
|
||||
from viewed_count vc
|
||||
left join possible_lessons pl on vc.user_id = pl.user_id
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user