Исправил недочёты после код-ревью.
This commit is contained in:
@@ -20,9 +20,7 @@ inner join edu_platform.lesson_views lv on u.id = lv.user_id
|
||||
left join edu_platform.lessons l on lv.lesson_id = l.id
|
||||
left join edu_platform.lessons l2 on e.course_id = l2.course_id
|
||||
group by
|
||||
u.id, u.name
|
||||
ORDER by
|
||||
u.id;
|
||||
u.id, u.name;
|
||||
|
||||
-- После анализа EXPLAIN
|
||||
-- Убрал диблирование строк, возникающее при Join-ах.
|
||||
@@ -41,7 +39,7 @@ users_enroll as (
|
||||
select
|
||||
u.id as user_id ,
|
||||
u.name as name,
|
||||
COUNT(e.course_id) as enrollment_count,
|
||||
COUNT(DISTINCT e.course_id) as enrollment_count,
|
||||
SUM(cl.lesson_count) as lesson_sum
|
||||
from
|
||||
edu_platform.users u
|
||||
@@ -57,7 +55,6 @@ users_lesson_views as (
|
||||
MIN(lv.viewed_at) as first_view
|
||||
from
|
||||
edu_platform.lesson_views lv
|
||||
left join edu_platform.lessons l on lv.lesson_id = l.id
|
||||
group by lv.user_id
|
||||
)
|
||||
select
|
||||
@@ -67,12 +64,10 @@ select
|
||||
ulv.viewed_lessons_count,
|
||||
ulv.last_view,
|
||||
ulv.first_view,
|
||||
ROUND( (ulv.viewed_lessons_count * 100.0) / nullif(lesson_sum, 0),
|
||||
ROUND( (nullif(ulv.viewed_lessons_count, 0) * 100.0) / ue.lesson_sum,
|
||||
2) as engagement_rate
|
||||
from users_enroll ue
|
||||
inner join users_lesson_views ulv on ue.user_id = ulv.user_id
|
||||
order by
|
||||
user_id;
|
||||
left join users_lesson_views ulv on ue.user_id = ulv.user_id;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -48,5 +48,4 @@ from
|
||||
edu_platform.courses c
|
||||
LEFT JOIN enroll e ON c.id = e.course_id
|
||||
LEFT JOIN lessons l ON c.id = l.course_id
|
||||
LEFT JOIN views v ON c.id = v.course_id
|
||||
ORDER BY c.id;
|
||||
LEFT JOIN views v ON c.id = v.course_id;
|
||||
@@ -26,6 +26,4 @@ from
|
||||
flv.course_id
|
||||
) as t1
|
||||
right join core.dim_lesson dl on dl.lesson_id = t1.lesson_id
|
||||
left join core.dim_course dc on t1.course_id = dc.course_id
|
||||
ORDER by
|
||||
t1.lesson_id;
|
||||
left join core.dim_course dc on t1.course_id = dc.course_id;
|
||||
@@ -4,7 +4,7 @@ DISTRIBUTED BY (user_id)
|
||||
AS
|
||||
select
|
||||
du.user_id as user_id,
|
||||
du."name" as user_name,
|
||||
du.name as user_name,
|
||||
du.email as email,
|
||||
du.age as age,
|
||||
COALESCE(e.enrollments_count, 0) as enrollments_count,
|
||||
|
||||
@@ -6,7 +6,7 @@ with activity_users as (
|
||||
select
|
||||
e.user_id as user_id,
|
||||
e.course_id as course_id,
|
||||
COUNT(flv.viewed_at) as lessons_viewed
|
||||
COUNT(DISTINCT flv.viewed_at) as lessons_viewed
|
||||
from
|
||||
core.enrollments e
|
||||
left join core.dim_lesson dl on e.course_id = dl.course_id
|
||||
@@ -23,7 +23,7 @@ course2 as (
|
||||
course_id)
|
||||
select
|
||||
au.user_id as user_id,
|
||||
du."name" as user_name,
|
||||
du.name as user_name,
|
||||
au.course_id as course_id,
|
||||
dc.title as course_title,
|
||||
c2.lessons_in_course as lessons_in_course,
|
||||
|
||||
Reference in New Issue
Block a user