Write SQL and Python, run instantly in your browser, and track your progress.
You are a Data Analyst at Shopify. A top merchant wants to launch a loyalty program and needs to identify their most valuable customers from the last quarter (90 days ending August 30, 2025).
Write a query that returns all customers who have placed a delivered order within this 90-day window. For each customer, show their ID, the count of delivered orders, and the total amount they were billed.
Sort by highest total billed amount first; break ties by smallest customer ID.
| Column Name | Type |
|---|---|
| order_id | INTEGER |
| order_number | TEXT |
| customer_id |
You are a Data Analyst at Shopify. A top merchant wants to launch a loyalty program and needs to identify their most valuable customers from the last quarter (90 days ending August 30, 2025).
Write a query that returns all customers who have placed a delivered order within this 90-day window. For each customer, show their ID, the count of delivered orders, and the total amount they were billed.
Sort by highest total billed amount first; break ties by smallest customer ID.
| Column Name | Type |
|---|---|
| order_id | INTEGER |
| order_number | TEXT |
| customer_id |
| INTEGER |
| INTEGER |
| order_datetime | TEXT |
| order_datetime | TEXT |
| status | TEXT |
| status | TEXT |
| fulfillment_type | TEXT |
| fulfillment_type | TEXT |
| ship_city | TEXT |
| ship_city | TEXT |
| ship_state | TEXT |
| ship_state | TEXT |
| ship_country | TEXT |
| ship_country | TEXT |
| shipping_service_level | TEXT |
| shipping_service_level | TEXT |
| subtotal | REAL |
| subtotal | REAL |
| shipping_fee | REAL |
| shipping_fee | REAL |
| tax | REAL |
| tax | REAL |
| discount | REAL |
| discount | REAL |
| total_amount | REAL |
| total_amount | REAL |
| payment_status | TEXT |
| payment_status | TEXT |
| created_at | TEXT |
| created_at | TEXT |
| order_id | order_number | customer_id | order_datetime | status | fulfillment_type | ship_city | ship_state | ship_country | shipping_service_level | subtotal | shipping_fee | tax | discount | total_amount |
|---|
| order_id | order_number | customer_id | order_datetime | status | fulfillment_type | ship_city | ship_state | ship_country | shipping_service_level | subtotal | shipping_fee | tax | discount | total_amount |
|---|
| customer_id | delivered_orders | total_billed_amount |
|---|---|---|
| 12 | 1 | 444.56 |
| 35 | 1 | 180.24 |
| 44 | 1 | 131.01 |
| customer_id | delivered_orders | total_billed_amount |
|---|---|---|
| 12 | 1 | 444.56 |
| 35 | 1 | 180.24 |
| 44 | 1 | 131.01 |
3 rows returned. Customer 12 has the highest total ($444.56) from 1 delivered order. Orders before June 1, 2025 (outside 90-day window) and non-delivered orders are excluded.
3 rows returned. Customer 12 has the highest total ($444.56) from 1 delivered order. Orders before June 1, 2025 (outside 90-day window) and non-delivered orders are excluded.
| payment_status |
|---|
| payment_status |
|---|
| created_at |
|---|
| created_at |
|---|
| 1 | ORD-10001 | 46 | 2025-08-20 07:01:34 | shipped | pickup | pickup | 50.96 | 0.0 | 4.36 | 0.0 | 55.32 | captured | 2025-08-20 07:01:34 | |||
| 2 | ORD-10002 | 19 | 2025-02-24 04:56:03 | delivered | ship |
| 1 | ORD-10001 | 46 | 2025-08-20 07:01:34 | shipped | pickup | pickup | 50.96 | 0.0 | 4.36 | 0.0 | 55.32 | captured | 2025-08-20 07:01:34 | |||
| 2 | ORD-10002 | 19 | 2025-02-24 04:56:03 | delivered | ship |
| Austin |
| Austin |
| TX |
| TX |
| US |
| US |
| economy |
| economy |
| 601.53 |
| 601.53 |
| 5.99 |
| 5.99 |
| 54.96 |
| 54.96 |
| 0.0 |
| 0.0 |
| 662.48 |
| 662.48 |
| partial_refund |
| partial_refund |
| 2025-02-24 04:56:03 |
| 2025-02-24 04:56:03 |
| 3 | ORD-10003 | 21 | 2025-02-13 17:43:43 | shipped | ship | London | ENG | UK | expedited | 68.26 | 14.99 | 5.41 | 0.0 | 88.66 | captured | 2025-02-13 17:43:43 |
| 3 | ORD-10003 | 21 | 2025-02-13 17:43:43 | shipped | ship | London | ENG | UK | expedited | 68.26 | 14.99 | 5.41 | 0.0 | 88.66 | captured | 2025-02-13 17:43:43 |
| 4 | ORD-10004 | 8 | 2025-02-07 13:00:50 | shipped | ship | Calgary | AB | CA | standard | 290.99 | 5.0 | 26.88 | 0.0 | 322.87 | captured | 2025-02-07 13:00:50 |
| 4 | ORD-10004 | 8 | 2025-02-07 13:00:50 | shipped | ship | Calgary | AB | CA | standard | 290.99 | 5.0 | 26.88 | 0.0 | 322.87 | captured | 2025-02-07 13:00:50 |
| 5 | ORD-10005 | 8 | 2025-06-24 03:59:58 | packed | ship | Edmonton | AB | CA | standard | 569.61 | 5.0 | 54.73 | 0.0 | 629.34 | captured | 2025-06-24 03:59:58 |
| 5 | ORD-10005 | 8 | 2025-06-24 03:59:58 | packed | ship | Edmonton | AB | CA | standard | 569.61 | 5.0 | 54.73 | 0.0 | 629.34 | captured | 2025-06-24 03:59:58 |