Ежемесячный доход по странам, только активные клиенты
Финансовый отчёт с фильтром клиентов в стиле HAVING
Показать предпросмотр ввода и вывода
Ввод
- Что должен возвращать запрос?
- Monthly revenue per country for 2025, counting only customers who placed more than 3 orders in 2025. Sort by month, then revenue descending.
- Таблицы и столбцы (необязательно)
- orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, country text, signup_at timestamp)
- Диалект SQL
- PostgreSQL
- Стиль запроса
- Читаемый (CTEs, один клаузул на строку)
- Пояснение
- Кратко
Вывод (фрагмент)
```sql
WITH active_customers AS (
SELECT o.customer_id
FROM orders AS o
WHERE o.created_at >= DATE '2025-01-01'
AND o.created_at < DATE '2026-01-01'
GROUP BY o.customer_id
HAVING COUNT(*) > 3
)
SELECT
DATE_TRUNC('month', o.created_at)::date AS month,
c.country,
SUM(o.total_cents) / 100.0 AS revenue
FROM orders AS o
JOIN active_customers AS a ON a.customer_id = o.customer_id
JOIN customers AS c ON c.id = o.customer_id
WHERE o.created_at >= DATE '2025-01-01'
AND o.created_at < DATE '2026-01-01'
GROUP BY 1, 2
ORDER BY month, revenue DESC;
```
**Схема использована как есть.**
CTE находит клиентов с более чем тремя заказами в 2025 году; основной запрос оставляет только их заказы, обрезает каждый заказ до месяца и суммирует доход по месяцам и странам. Диапазон дат полузакрытый, поэтому 31 декабря учитывается один раз…