WITH first_order AS (SELECT customer_name, MIN(strftime('%Y-%m', order_date)) AS first_month FROM orders GROUP BY customer_name) SELECT strftime('%Y-%m', o.order_date) AS month, SUM(CASE WHEN strftime('%Y-%m', o.order_date) = f.first_month THEN o.amount ELSE 0 END) AS new_customer_revenue, SUM(CASE WHEN strftime('%Y-%m', o.order_date) != f.first_month THEN o.amount ELSE 0 END) AS returning_customer_revenue FROM orders o JOIN first_order f ON o.customer_name = f.customer_name GROUP BY month ORDER BY month;
Write your query and click "Run Query" (Ctrl + Enter) to see results and testcase validation.