fix course_summary and user_activity files
This commit is contained in:
@@ -13,25 +13,33 @@ GROUP BY c.id, c.title
|
|||||||
courses_views AS (
|
courses_views AS (
|
||||||
SELECT
|
SELECT
|
||||||
l.course_id,
|
l.course_id,
|
||||||
COUNT(DISTINCT l.id) AS lessons_count,
|
|
||||||
COUNT(lv.id) AS total_views,
|
COUNT(lv.id) AS total_views,
|
||||||
MAX(lv.viewed_at) AS last_viewed_at,
|
MAX(lv.viewed_at) AS last_viewed_at,
|
||||||
MIN(lv.viewed_at) AS first_viewed_at
|
MIN(lv.viewed_at) AS first_viewed_at
|
||||||
FROM lessons l
|
FROM lessons l
|
||||||
JOIN lesson_views lv ON l.id = lv.lesson_id
|
JOIN lesson_views lv ON l.id = lv.lesson_id
|
||||||
GROUP BY l.course_id
|
GROUP BY l.course_id
|
||||||
|
),
|
||||||
|
courses_lessons AS (
|
||||||
|
SELECT
|
||||||
|
course_id,
|
||||||
|
COUNT(DISTINCT id) AS lessons_count
|
||||||
|
FROM lessons
|
||||||
|
GROUP BY course_id
|
||||||
)
|
)
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
cu.course_id,
|
cu.course_id,
|
||||||
cu.course_name,
|
cu.course_name,
|
||||||
cu.unique_users,
|
cu.unique_users,
|
||||||
cv.lessons_count,
|
cl.lessons_count,
|
||||||
cv.total_views,
|
cv.total_views,
|
||||||
ROUND(cv.total_views::DECIMAL / NULLIF(cu.unique_users, 0), 2) AS avg_views_per_user,
|
ROUND(cv.total_views::DECIMAL / NULLIF(cu.unique_users, 0), 2) AS avg_views_per_user,
|
||||||
cv.first_viewed_at,
|
cv.first_viewed_at,
|
||||||
cv.last_viewed_at
|
cv.last_viewed_at
|
||||||
FROM courses_users cu
|
FROM courses_users cu
|
||||||
LEFT JOIN courses_views cv USING(course_id)
|
LEFT JOIN courses_views cv USING(course_id)
|
||||||
|
LEFT JOIN courses_lessons cl USING(course_id)
|
||||||
ORDER BY cu.course_id;
|
ORDER BY cu.course_id;
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ WITH users_views AS (
|
|||||||
SELECT
|
SELECT
|
||||||
u.id AS user_id,
|
u.id AS user_id,
|
||||||
u.name,
|
u.name,
|
||||||
COUNT(DISTINCT lv.lesson_id) AS viewed_lessons_COUNT,
|
COUNT(DISTINCT lv.lesson_id) AS viewed_lessons_count,
|
||||||
MAX(lv.viewed_at) AS last_view,
|
MAX(lv.viewed_at) AS last_view,
|
||||||
MIN(lv.viewed_at) AS first_view
|
MIN(lv.viewed_at) AS first_view
|
||||||
FROM users AS u
|
FROM users AS u
|
||||||
@@ -16,7 +16,7 @@ GROUP BY u.id
|
|||||||
users_engagement AS (
|
users_engagement AS (
|
||||||
SELECT
|
SELECT
|
||||||
e.user_id AS user_id,
|
e.user_id AS user_id,
|
||||||
COUNT(l.id) AS lessons_cnt,
|
COUNT(DISTINCT l.id) AS lessons_cnt,
|
||||||
COUNT(DISTINCT course_id) AS enrollment_count
|
COUNT(DISTINCT course_id) AS enrollment_count
|
||||||
FROM enrollments AS e
|
FROM enrollments AS e
|
||||||
JOIN lessons AS l using(course_id)
|
JOIN lessons AS l using(course_id)
|
||||||
@@ -28,7 +28,7 @@ SELECT
|
|||||||
uv.name,
|
uv.name,
|
||||||
ue.enrollment_count,
|
ue.enrollment_count,
|
||||||
uv.viewed_lessons_count,
|
uv.viewed_lessons_count,
|
||||||
uv.lASt_view,
|
uv.last_view,
|
||||||
uv.first_view,
|
uv.first_view,
|
||||||
ROUND(uv.viewed_lessons_count::DECIMAL / NULLIF(ue.lessons_cnt, 0) * 100, 2) AS engagement_rate
|
ROUND(uv.viewed_lessons_count::DECIMAL / NULLIF(ue.lessons_cnt, 0) * 100, 2) AS engagement_rate
|
||||||
FROM users_views AS uv
|
FROM users_views AS uv
|
||||||
|
|||||||
Reference in New Issue
Block a user