WHERE filter combining date scope and inequality.
Pull every late shipment this quarter (Q2 2026 — April so far). Late = `actual_arrival > expected_arrival`. Skip in-flight (NULL actual_arrival) and cancelled. Return po_number, supplier_name, expected_arrival, actual_arrival, and how many days late. Sort by days_late DESC.
| Column | Type | Key |
|---|---|---|
| po_id | INT | PK |
| po_number | TEXT | |
| sku_id | INT | FK → dim_skus |
| supplier_id | INT | FK → dim_suppliers |
| warehouse_id | INT | FK → dim_warehouses |
| order_date | TEXT | |
| expected_arrival | TEXT | |
| actual_arrival | TEXT | |
| qty_ordered | INT | |
| qty_received | INT | |
| unit_cost | REAL | |
| status | TEXT |
| Column | Type | Key |
|---|---|---|
| supplier_id | INT | PK |
| supplier_name | TEXT | |
| country | TEXT | |
| lead_time_target_days | INT | |
| on_time_target_pct | REAL | |
| is_active | INT |
Each hint you reveal reduces the XP you can earn. Try the query first.
JOIN `fact_purchase_orders` to `dim_suppliers`. Filter `status = 'received'` AND `order_date BETWEEN '2026-04-01' AND '2026-04-30'`.
Late filter: `actual_arrival > expected_arrival`.
days_late = `actual_arrival::date - expected_arrival::date` (Postgres returns an INTEGER number of days). The SQLite equivalent is `julianday(actual_arrival) - julianday(expected_arrival)`.