20 lines
656 B
PL/PgSQL
20 lines
656 B
PL/PgSQL
BEGIN;
|
|
|
|
CREATE MATERIALIZED VIEW platform_summary AS
|
|
SELECT
|
|
(SELECT COUNT(*) FROM users) AS total_users,
|
|
(SELECT COUNT(*) FROM courses) AS total_courses,
|
|
(SELECT COUNT(*) FROM lessons) AS total_lessons,
|
|
(SELECT COUNT(DISTINCT user_id) FROM lesson_views) AS users_with_views,
|
|
ROUND(
|
|
(SELECT COUNT(*)::DECIMAL FROM lessons) /
|
|
NULLIF((SELECT COUNT(DISTINCT course_id) FROM lessons), 0),
|
|
2
|
|
) AS avg_lessons_per_course,
|
|
ROUND(
|
|
(SELECT COUNT(*)::DECIMAL FROM lesson_views) /
|
|
NULLIF((SELECT COUNT(DISTINCT lesson_id) FROM lesson_views), 0),
|
|
2
|
|
) AS avg_views_per_lesson;
|
|
|
|
COMMIT; |