SQL Quest › SQL Interview Questions › Window Functions
Geographic Mismatch — Impossible Travel
Same card, two cities, five minutes apart. Use LAG() over txn_at partitioned by account to grab each transaction's previous coordinates and time. Flag pairs where the geographic distance is more than 500 km AND the time gap is less than 30 minutes — physically impossible legitimate travel.
For distance, use a degree-distance approximation: SQRT((lat - prev_lat)^2 + (lng - prev_lng)^2) * 111 ≈ km (rough but fine for gross-mismatch detection). True Haversine accounts for longitude convergence at high latitudes; the approximation is close enough for fraud screening.
Show account_id, txn_id, prev_at, txn_at, km_from_prev (rounded to 0), minutes_from_prev (rounded to 1). Order by km_from_prev descending. Top 15.
Solve it in the browser editor →
Runs on SQLite in your browser, graded against the expected result, no signup. A wrong answer gets a diagnosis, not just "incorrect".
Schema
transactions
| txn_id | account_id | amount | txn_at | merchant_id | lat | lng | status |
|---|---|---|---|---|---|---|---|
| 1 | 149 | 151.84 | 2026-03-04T12:39:39.078Z | 24 | 40.342 | -74.4092 | completed |
| 2 | 21 | 10.72 | 2026-03-04T13:04:50.641Z | 7 | 52.9366 | 13.3229 | completed |
| 3 | 35 | 158.78 | 2026-03-04T13:27:15.528Z | 25 | 52.7397 | 13.3134 | completed |
Expected output: Impossible-travel transaction pairs
Hint
Concepts
SELECT Window Functions LAG Date Functions
Practise the topic: SQL practice questions · Window function practice · Date function practice · Advanced SQL interview questions
Related questions
Where would this cost you points in an interview?
Ten questions, no signup: a Skillmap across nine SQL skills and the one to fix first.
Take the readiness test