Loading problem...
You are given two relational tables used by a ride-hailing analytics system.
Trips records each ride request:
id (unique trip id)client_iddriver_idcity_idstatus in {completed, cancelled_by_client, cancelled_by_driver}request_at (date string in YYYY-MM-DD)Users records account status:
users_id (unique user id)banned in {Yes, No}role in {client, driver, partner}Compute the daily cancellation rate for valid trips in the inclusive date window:
2013-10-012013-10-022013-10-03A trip is valid only when:
For each day with at least one valid trip, return:
DayCancellation RateWhere:
Cancellation Rate = cancelled_valid_trips / total_valid_tripscancelled_by_client or cancelled_by_driver.Return rows in any order.
This problem must be solvable in both:
Trips:
| id | client_id | driver_id | city_id | status | request_at |
|----|-----------|-----------|---------|---------------------|-------------|
| 1 | 101 | 201 | 1 | completed | 2013-10-01 |
| 2 | 102 | 202 | 1 | cancelled_by_driver | 2013-10-01 |
| 3 | 101 | 201 | 1 | cancelled_by_client | 2013-10-02 |
| 4 | 103 | 201 | 2 | completed | 2013-10-04 |
Users:
| users_id | banned | role |
|----------|--------|--------|
| 101 | No | client |
| 102 | No | client |
| 103 | No | client |
| 201 | No | driver |
| 202 | No | driver |[
{"Day":"2013-10-01","Cancellation Rate":0.5},
{"Day":"2013-10-02","Cancellation Rate":1.0}
]Only dates in the target window are considered. On 2013-10-01, one out of two valid trips is cancelled. On 2013-10-02, one out of one valid trips is cancelled. The trip on 2013-10-04 is ignored.
Trips:
| id | client_id | driver_id | city_id | status | request_at |
|----|-----------|-----------|---------|---------------------|-------------|
| 1 | 1 | 10 | 1 | completed | 2013-10-01 |
| 2 | 2 | 11 | 1 | cancelled_by_driver | 2013-10-01 |
| 3 | 1 | 11 | 1 | completed | 2013-10-01 |
Users:
| users_id | banned | role |
|----------|--------|--------|
| 1 | No | client |
| 2 | Yes | client |
| 10 | No | driver |
| 11 | No | driver |[
{"Day":"2013-10-01","Cancellation Rate":0.0}
]Trip id=2 is excluded because the client is banned. Among valid trips (id=1, id=3), none is cancelled.
Trips:
| id | client_id | driver_id | city_id | status | request_at |
|----|-----------|-----------|---------|---------------------|-------------|
| 1 | 5 | 50 | 3 | cancelled_by_client | 2013-10-03 |
| 2 | 5 | 51 | 3 | completed | 2013-10-03 |
Users:
| users_id | banned | role |
|----------|--------|--------|
| 5 | No | client |
| 50 | No | driver |
| 51 | Yes | driver |[
{"Day":"2013-10-03","Cancellation Rate":1.0}
]Trip id=2 is excluded because the driver is banned. The only remaining valid trip is cancelled, so the day rate is 1.0.
Constraints