All problems

Cancellation Rate by Rider City

hardSQLJoinsGroupBy

Ops suspects cancellation behavior differs by city and wants a rate, not a raw count, so cities of different sizes are comparable.

riders

id name city signup_date
1 Maya Chen Austin 2023-01-05
2 Noah Patel Denver 2023-02-14
3 Zara Ahmed Austin 2023-03-01
4 Leo Kim Seattle 2023-04-20
5 Ivy Brooks Denver 2023-05-11

rides

id rider_id driver_id distance_km fare ride_date status
1 1 1 5.2 12.5 2023-06-01 completed
2 1 4 3 8 2023-06-03 completed
3 2 2 10 22 2023-06-02 completed
4 3 1 2.1 6.5 2023-06-05 cancelled
5 3 4 4.4 11 2023-06-06 completed
6 4 3 7.8 18 2023-06-04 completed
7 5 2 1.5 5 2023-06-07 cancelled
8 2 2 12.3 26.5 2023-06-10 completed
9 1 1 6.6 15 2023-06-12 completed
10 4 3 3.3 9 2023-06-15 completed
11 5 2 8.8 19.5 2023-06-18 completed
12 3 4 2.9 7.5 2023-06-20 cancelled

Task: Write a query that returns one row per rider city with its cancellation_rate: out of all rides booked by riders who live in that city, the fraction that ended up cancelled, as a number between 0 and 1 rounded to 2 decimals. Every ride counts toward the denominator whatever its status; the city is the rider's home city, not the driver's; and a city with no cancellations at all still appears, at 0. Rows come back in alphabetical order of city.

Example output — shape only, on invented cities and rates; a city that never cancelled still shows up, at 0.

city cancellation_rate
Boise 0.4
Reno 0
Tulsa 0.17

Sign in to solve this problem

Reading problems is free for everyone — solving them (Run, Submit, and tracking what you've solved) needs an account.

Sign in

Discussion

Sign in to join the discussion — reading is open to everyone.

Loading comments…