-- ### ✅ **Задание 3: Создай витрину `inactive_users_summary`** -- -- **Цель:** выявить пользователей, которые **зарегистрировались, но ничего не посмотрели**. -- -- 📌 **Что нужно сделать:** -- -- - Подготовь таблицу, где каждая строка — один такой "неактивный" пользователь. -- - Для каждого пользователя нужны: -- - ID, имя, email, возраст -- - Количество курсов, на которые он записался -- - Дата регистрации -- **Где пригодится:** -- -- Эта витрина может использоваться для продуктовой аналитики, триггерных рассылок (например, напоминаний), анализа оттока, повышения вовлечённости. SELECT u.user_id AS user_id, any(u.name) AS user_name, any(u.email) AS email, any(u.age) AS age, count() course_count, any(u.registration_date) AS registration_date FROM pet_project.users u LEFT JOIN pet_project.enrollments e USING (user_id) GROUP BY u.user_id ORDER BY u.user_id ; -- Создание вьюшки -- Я убрал countDistinctState(e.course_id) - потому что если e.course_id IS NULL, то считать нечего (курсов = 0 у всех). CREATE MATERIALIZED VIEW pet_project.mv_inactive_users_summary ENGINE AggregatingMergeTree() ORDER BY (user_id) AS SELECT u.user_id AS user_id, any(u.name) AS user_name, any(u.email) AS email, any(u.age) AS age, any(u.registration_date) AS registration_date FROM pet_project.users u LEFT JOIN pet_project.enrollments e USING (user_id) WHERE e.user_id IS NULL GROUP BY u.user_id; -- проверка SELECT * FROM pet_project.mv_inactive_users_summary;