Исправил недочёты после код-ревью.

This commit is contained in:
Anton
2025-12-07 16:28:38 +04:00
parent 04fe13e9d9
commit cd513f80f7
5 changed files with 9 additions and 17 deletions
@@ -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,