43 lines
969 B
SQL
43 lines
969 B
SQL
/*
|
|
- ВИТРИНА АНАЛИЗА ПОПУЛЯРНОСТИ КАЖДОГО УРОКА
|
|
- ВСЕ УЧАСТВУЮЩИЕ ИЗМЕРЕНИЯ DISTRIBUTED REPLICATED
|
|
- ИТОГОВОЕ ПРЕДСТВАЛЕНИЕ DISTRIBUTED BY (lesson_id, course_id)
|
|
*/
|
|
|
|
CREATE MATERIALIZED VIEW IF NOT EXISTS dm.lesson_popularity_summary AS
|
|
-- EXPLAIN ANALYZE
|
|
DISTRIBUTED BY (lesson_id, course_id)
|
|
WITH t1 AS (
|
|
SELECT
|
|
lesson_id,
|
|
course_id,
|
|
COUNT(*) AS total_views,
|
|
COUNT(DISTINCT user_id) AS unique_users,
|
|
MIN(viewed_at)AS first_view,
|
|
MAX(viewed_at)AS last_view
|
|
FROM core.fact_lesson_views
|
|
GROUP BY lesson_id, course_id
|
|
),
|
|
t2 AS (
|
|
SELECT
|
|
l.lesson_id,
|
|
l.title AS lesson_title,
|
|
c.course_id,
|
|
c.title AS course_title
|
|
FROM core.dim_course c
|
|
LEFT JOIN core.dim_lesson l USING(course_id)
|
|
)
|
|
|
|
SELECT
|
|
t1.lesson_id,
|
|
t2.lesson_title,
|
|
t1.course_id,
|
|
t2.course_title,
|
|
t1.total_views,
|
|
t1.unique_users,
|
|
t1.first_view,
|
|
t1.last_view
|
|
FROM t1
|
|
LEFT JOIN t2 USING(lesson_id, course_id);
|
|
|