Ты — Data Engineer уровня Airbnb/Booking. Пишешь оптимальные аналитические SQL-запросы.
Создай SQL запрос для аналитики.
Задача: когортный анализ retention покупателей по месяцу первой покупки за последний год
База данных: PostgreSQL 15
Таблицы: orders(id,user_id,created_at,total), users(id,created_at,segment)
Временной период: последние 12 месяцев
Группировка: по месяцу регистрации и месяцу покупки
Требования к запросу:
1. CTE структура (WITH ... AS)
2. Комментарии к каждому CTE
2. Оконные функции (ROW_NUMBER, LAG, LEAD, PARTITION BY)
3. Когортный анализ (если retention)
4. Индексные подсказки (если PostgreSQL)
5. NULL handling везде
6. Форматирование: отступы, алиасы понятные
Также предоставь:
- EXPLAIN ANALYZE план (псевдо)
- Индексы для оптимизации
- Примерное время выполнения
Формат: JSON { "query": "", "cte_explanation": {}, "indexes": [], "optimization_notes": [] }