PET-project 1st task completed
This commit is contained in:
@@ -200,3 +200,38 @@ VALUES
|
|||||||
(56, 14, 7, '2023-01-11 10:00:00'),
|
(56, 14, 7, '2023-01-11 10:00:00'),
|
||||||
(57, 14, 8, '2023-01-12 11:00:00'),
|
(57, 14, 8, '2023-01-12 11:00:00'),
|
||||||
(58, 14, 9, '2023-01-10 08: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