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