SQL-запрос для анализа летней активности пользователей
WITH summer_travelers AS (
-- Пользователи, у которых в летние месяцы (июнь-август) travel_mode встречается чаще, чем post
SELECT
user_id,
location,
SUM(CASE WHEN action = 'travel_mode' THEN 1 ELSE 0 END) AS travel_count,
SUM(CASE WHEN action = 'post' THEN 1 ELSE 0 END) AS post_count
FROM
user_activity
WHERE
EXTRACT(MONTH FROM timestamp) BETWEEN 6 AND 8
GROUP BY
user_id, location
HAVING
SUM(CASE WHEN action = 'travel_mode' THEN 1 ELSE 0 END) >
SUM(CASE WHEN action = 'post' THEN 1 ELSE 0 END)
),
recent_recommendations AS (
-- Рекомендации за последний месяц
SELECT
user_id,
recommendation
FROM
ai_recommendations
WHERE
generated_at >= CURRENT_DATE - INTERVAL '1 month'
)
-- Итоговый результат с пользователями и их рекомендациями (если есть)
SELECT
st.user_id,
st.location,
rr.recommendation
FROM
summer_travelers st
LEFT JOIN
reccent_recommendations rr ON st.user_id = rr.user_id
ORDER BY
st.user_id;
Этот запрос:
1. Сначала находит пользователей, у которых в летние месяцы (июнь-август) действие 'travel_mode' встречается чаще, чем 'post'
2. Затем проверяет, есть ли для этих пользователей рекомендации ИИ, созданные за последний месяц
3. В результате выводит список таких пользователей с их локацией и текстом рекомендации (если она существует)
Примечание: В зависимости от СУБД может потребоваться корректировка синтаксиса для извлечения месяца из даты и работы с интервалами.
#sql@cool_analyst