WITH ordered AS (SELECT customer_name, order_date, LAG(order_date) OVER (PARTITION BY customer_name ORDER BY order_date) AS prev_order_date FROM orders) SELECT customer_name, AVG(JULIANDAY(order_date) - JULIANDAY(prev_order_date)) AS avg_days_between_orders FROM ordered WHERE prev_order_date IS NOT NULL GROUP BY customer_name ORDER BY avg_days_between_orders;
Write your query and click "Run Query" (Ctrl + Enter) to see results and testcase validation.