本文主要是介绍【力扣白嫖日记】262.行程和用户,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。
今日题目:
262.行程和用户
表:Trips
列名 | 类型 |
---|---|
id | int |
client_id | int |
deriver_id | int |
city_id | int |
status | enum |
request_at | date |
id 是这张表的主键(具有唯一值的列)。这张表中存所有出租车的行程信息。每段行程有唯一 id ,其中 client_id 和 driver_id 是 Users 表中 users_id 的外键。status 是一个表示行程状态的枚举类型,枚举成员为(‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’) 。
表:Users
列名 | 类型 |
---|---|
users_id | int |
brand | enum |
role | enum |
users_id 是这张表的主键(具有唯一值的列)。这张表中存所有用户,每个用户都有一个唯一的 users_id ,role 是一个表示用户身份的枚举类型,枚举成员为 (‘client’, ‘driver’, ‘partner’) 。banned 是一个表示用户是否被禁止的枚举类型,枚举成员为 (‘Yes’, ‘No’) 。
取消率 的计算方式如下:(被司机或乘客取消的非禁止用户生成的订单数量) / (非禁止用户生成的订单总数)。
编写解决方案找出 “2013-10-01” 至 “2013-10-03” 期间非禁止用户(乘客和司机都必须未被禁止)的取消率。非禁止用户即 banned 为 No 的用户,禁止用户即 banned 为 Yes 的用户。其中取消率 Cancellation Rate 需要四舍五入保留 两位小数 。
返回结果表中的数据 无顺序要求 。
我那不值一提的想法:
- 首先梳理表内容,题干一共给了一张行程表,一张用户表,行程表记录了行程id,客户id,司机id,城市id,行程状态(‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)
#以及响应日期。一张用户表,记录了用户id,用户身份(‘client’, ‘driver’, ‘partner’),以及用户是否被禁止 - 其次分析需求,需要找到 “2013-10-01” 至 “2013-10-03” 期间非禁止用户(乘客和司机都必须未被禁止)的取消率。
- 对于这道题我认为首先找到禁止用户,也就是banned = "yes"的用户
select users_id
from Users
where banned = "yes"
- 在找到了所有禁止用户后,我们后面查询的时候就可以加上条件,所有用户id和司机id都不在这个里面
client_id not in (select users_id from Users where banned = "yes"
)
and driver_id not in (select users_id from Users where banned = "yes"
)
- 那么就可以开始计算非禁止用户的订单总量
count(status)
- 非禁止用户的拒绝订单总量
sum(if(status = "completed",0,1))
- 由于是按照日期查询我们还需要加个整体条件
where request_at between "2013-10-01" and "2013-10-03"
,同时不要忘记了最后使用日期进行分组。 - 到这里,所有步骤完整,将所有代码拼接成完整代码,
select request_at as 'Day',round(sum(if(status = "completed",0,1))/count(status),2) as 'Cancellation Rate'
from Trips
where request_at between "2013-10-01" and "2013-10-03"
and client_id not in (select users_id from Users where banned = "yes"
)
and driver_id not in (select users_id from Users where banned = "yes"
)
group by request_at
结果:
总结:
能运行就行。
这篇关于【力扣白嫖日记】262.行程和用户的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!