Your question is Segment Orders by Delivery Outcome. Start with the requirements and the one table on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
SwiftCart wants a simple delivery performance breakdown from its orders table. Write a PostgreSQL query that uses a CASE statement to segment each order into a delivery outcome bucket, then returns the number of orders in each bucket.
delivery_outcome using these rules:
Delivered when delivered_at is not null and delivered_at <= promised_dateDelivered Late when delivered_at is not null and delivered_at > promised_dateCancelled when status = 'cancelled'In Progress for all other rowsdelivery_outcome and order_countorder_count descending, then delivery_outcome ascending| Column | Type | Description |
|---|---|---|
| order_idPK | INT | Primary key for the order |
| customer_name | VARCHAR(100) | Customer name |
| status | VARCHAR(20) | Current order status such as delivered, shipped, processing, or cancelled |
| order_date | DATE | Date the order was placed |
| promised_date | DATE | Expected delivery date |
| delivered_at | DATE | Actual delivery date, null if not delivered |