diff --git a/1 - Пет-проект_Онлайн-курсы/2.1 DDL_CREATE_MAT_VIEW_user_activity_summary.sql b/1 - Пет-проект_Онлайн-курсы/2.1 DDL_CREATE_MAT_VIEW_user_activity_summary.sql index 77d9906..892710e 100644 --- a/1 - Пет-проект_Онлайн-курсы/2.1 DDL_CREATE_MAT_VIEW_user_activity_summary.sql +++ b/1 - Пет-проект_Онлайн-курсы/2.1 DDL_CREATE_MAT_VIEW_user_activity_summary.sql @@ -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; diff --git a/1 - Пет-проект_Онлайн-курсы/2.2 DDL_CREATE_MAT_VIEW_course_summary.sql b/1 - Пет-проект_Онлайн-курсы/2.2 DDL_CREATE_MAT_VIEW_course_summary.sql index 963f05b..b0aea35 100644 --- a/1 - Пет-проект_Онлайн-курсы/2.2 DDL_CREATE_MAT_VIEW_course_summary.sql +++ b/1 - Пет-проект_Онлайн-курсы/2.2 DDL_CREATE_MAT_VIEW_course_summary.sql @@ -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; \ No newline at end of file +LEFT JOIN views v ON c.id = v.course_id; \ No newline at end of file diff --git a/2 - GreenPlum-Pet-project/7.1 DDL_CREATE_dm.lesson_popularity_summary.SQL b/2 - GreenPlum-Pet-project/7.1 DDL_CREATE_dm.lesson_popularity_summary.SQL index 1605cb9..cb9b7d0 100644 --- a/2 - GreenPlum-Pet-project/7.1 DDL_CREATE_dm.lesson_popularity_summary.SQL +++ b/2 - GreenPlum-Pet-project/7.1 DDL_CREATE_dm.lesson_popularity_summary.SQL @@ -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; \ No newline at end of file +left join core.dim_course dc on t1.course_id = dc.course_id; \ No newline at end of file diff --git a/2 - GreenPlum-Pet-project/7.2 DDL_CREATE_dm.inactive_users_summary.SQL b/2 - GreenPlum-Pet-project/7.2 DDL_CREATE_dm.inactive_users_summary.SQL index 4843889..b0e7a82 100644 --- a/2 - GreenPlum-Pet-project/7.2 DDL_CREATE_dm.inactive_users_summary.SQL +++ b/2 - GreenPlum-Pet-project/7.2 DDL_CREATE_dm.inactive_users_summary.SQL @@ -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, diff --git a/2 - GreenPlum-Pet-project/7.3 DDL_CREATE_dm.course_completion_rate.SQL b/2 - GreenPlum-Pet-project/7.3 DDL_CREATE_dm.course_completion_rate.SQL index da4ba53..7051476 100644 --- a/2 - GreenPlum-Pet-project/7.3 DDL_CREATE_dm.course_completion_rate.SQL +++ b/2 - GreenPlum-Pet-project/7.3 DDL_CREATE_dm.course_completion_rate.SQL @@ -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,