First look at fact_orders — a 4-channel reconciled order table. Practice single-table GROUP BY + COUNT to surface the channel mix. Foundational shape every omnichannel analyst writes daily before any deeper question.
Welcome aboard. Before we touch a single dashboard, get familiar with our orders table. fact_orders carries every order across all four channels (web_ship, web_bopis, store_walk_in, store_ship_from_store). Give me a count of orders by channel — single column GROUP BY, COUNT(*), ordered by order_count DESC then channel ASC. Two columns: channel, order_count. Sanity check the four channel names — they should match exactly.
| Column | Type | Key |
|---|---|---|
| order_id | INT | PK |
| sku_id | INT | FK → dim_skus |
| store_id | INT | FK → dim_stores |
| channel | TEXT | |
| customer_zip | TEXT | |
| order_ts | TEXT | |
| units | INT | |
| gross_amount | REAL | |
| discount_amount | REAL | |
| fulfillment_cost | REAL |
Each hint you reveal reduces the XP you can earn. Try the query first.
Single-table query — fact_orders is all you need.
GROUP BY channel, COUNT(*) for the order_count column.
ORDER BY order_count DESC, channel ASC keeps output deterministic.
No WHERE clause — every order counts, including foot-traffic-no-purchase store_walk_in rows (we'll filter those in M3).