count内嵌if,完成对应状态的计数,小数位用round处理。
with bannes_users as (
select users_id from Users where banned='Yes'
)
select
request_at 'Day',
round(count(if(status!='completed',status,null))/count(*),2) 'Cancellation Rate'
from Trips
where request_at between "2013-10-01" and "2013-10-03"
and client_id not in (select users_id from bannes_users)
and driver_id not in (select users_id from bannes_users)
group by request_at;
同样,我们还可以用sum来计数。
with bannes_users as (
select users_id from Users where banned='Yes'
)
select
request_at 'Day',
round(sum(if(status!='completed',1,0))/count(*),2) 'Cancellation Rate'
from Trips
where request_at between "2013-10-01" and "2013-10-03"
and client_id not in (select users_id from bannes_users)
and driver_id not in (select users_id from bannes_users)
group by request_at;