Files
homework/kzhekshen/cl-house/queries/inactive_users_summary.sql
T
2025-11-28 15:44:40 +04:00

44 lines
2.1 KiB
SQL

-- ### ✅ **Задание 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;