Monatlicher Umsatz pro Land, nur aktive Kunden
Ein Finanzbericht mit einem HAVING‑basierten Kundenfilter
Vorschau von Eingabe und Ausgabe anzeigen
Eingabe
- Was soll die Abfrage zurückgeben?
- Monthly revenue per country for 2025, counting only customers who placed more than 3 orders in 2025. Sort by month, then revenue descending.
- Tabellen und Spalten (optional)
- orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, country text, signup_at timestamp)
- SQL‑Dialekt
- PostgreSQL
- Abfragesstil
- Lesbar (CTEs, eine Klausel pro Zeile)
- Erklärung
- Kurz
Ausgabe (Auszug)
```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;
```
**Schema wie angegeben verwendet.**
Das CTE findet Kunden mit mehr als drei Bestellungen im Jahr 2025; die Hauptabfrage behält nur deren Bestellungen, trunciert jede Bestellung auf ihren Monat und summiert den Umsatz pro Monat und Land. Der Datumsbereich ist halb offen, sodass der 31. Dezember nur einmal gezählt wird…