# total rides by unbanned users by day
with total_rides as (SELECT t.request_at as day,
count(1) as total_rides
from trips t join
users u on t.client_id = u.users_id and u.banned = 'No' and request_at between '2013-10-01' and '2013-10-03'
group by 1),
# cancelled rides by unbanned users by day
cancelled_rides as (
SELECT t.request_at as day,
count(1) as cancelled_rides
from trips t join
users u on t.client_id = u.users_id
where t.status like 'cancelled%'and u.banned = 'No' and request_at between '2013-10-01' and '2013-10-03'
group by 1
),
combined as(select tr.day, tr.total_rides as total_rides, cr.cancelled_rides as cancelled_rides from cancelled_rides cr
right join total_rides tr on cr.day = tr.day)
select day, case when cancelled_rides is NULL then 0
else round(cancelled_rides/total_rides,2) end as "cancellation rate"
from combined