-- Calculates the average difference in days between the estimated delivery date and the actual delivery date for all orders that have been delivered. -- -- Explanation step by step: -- 1. Select the customer state and the average difference in days between the estimated delivery date and the actual delivery date for all orders that have been delivered. -- 2. Join the olist_orders table with the olist_customers table on the customer_id column. -- 3. Filter the results to only include orders that have been delivered and have an actual delivery date. -- 4. Group the results by the customer state. -- 5. Order the results by the average difference in days between the estimated delivery date and the actual delivery date. SELECT oc.customer_state AS State, CAST( AVG( julianday ( STRFTIME ('%Y-%m-%d', oo.order_estimated_delivery_date) ) - julianday ( STRFTIME ('%Y-%m-%d', oo.order_delivered_customer_date) ) ) AS INTEGER ) AS Delivery_Difference FROM olist_orders oo JOIN olist_customers oc ON oo.customer_id = oc.customer_id WHERE oo.order_status = 'delivered' AND oo.order_delivered_customer_date IS NOT NULL GROUP BY oc.customer_state ORDER BY Delivery_Difference ASC;