行程和用户

简介: 行程和用户

公众号merlinsea


  • leetcode链接地址
  • 题目介绍
  • Trips表
  • id 是这张表的主键。这张表中存所有出租车的行程信息。每段行程有唯一 id ,其中 client_id 和 driver_id 是 Users 表中 users_id 的外键。status 是一个表示行程状态的枚举类型,枚举成员为(‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’) 。


+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| id          | int      |
| client_id   | int      |
| driver_id   | int      |
| city_id     | int      |
| status      | enum     |
| request_at  | date     |     
+-------------+----------+


  • Users表
  • users_id 是这张表的主键。这张表中存所有用户,每个用户都有一个唯一的 users_id ,role 是一个表示用户身份的枚举类型,枚举成员为 (‘client’, ‘driver’, ‘partner’) 。banned 是一个表示用户是否被禁止的枚举类型,枚举成员为 (‘Yes’, ‘No’) 。


+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| users_id    | int      |
| banned      | enum     |
| role        | enum     |
+-------------+----------+
  • 取消率 的计算方式如下:(被司机或乘客取消的非禁止用户生成的订单数量) / (非禁止用户生成的订单总数)。写一段 SQL 语句查出 "2013-10-01" 至 "2013-10-03" 期间非禁止用户(乘客和司机都必须未被禁止)的取消率。非禁止用户即 banned 为 No 的用户,禁止用户即 banned 为 Yes 的用户。返回结果表中的数据可以按任意顺序组织。其中取消率 Cancellation Rate 需要四舍五入保留 两位小数 。
  • 思路
  • 第一步:将trips表和users表进行leftjoin找到所有司机和乘客是否是被禁止状态,通过client_id 和user_id进行关联,以及driver_id和user_id进行关联


select trips.*,cu.*,du.*
from trips left join users cu on trips.client_id=cu.users_id
left join users du on trips.driver_id = du.users_id

640.png


  • 第二步:由于需要求出10.1号到10.3号每一天的取消率,因此需要将结果按照时间进行分组,并挑选出10.1号到10.3号的分组结果


# 计算非禁止用户的订单【10.1 - 10.3 每一天】
select trips.request_at,count(*) cnt
from trips left join users cu on trips.client_id=cu.users_id
left join users du on trips.driver_id = du.users_id
where cu.banned = 'No' and du.banned = 'No'
group by request_at
having request_at>='2013-10-01' and request_at<='2013-10-03'
| request_at | cnt |
| ---------- | --- |
| 2013-10-01 | 3   |
| 2013-10-02 | 2   |
| 2013-10-03 | 2   |
# 被司机或乘客取消的非禁止用户生成的订单数量
select trips.request_at,count(*) cnt
from trips left join users cu on trips.client_id=cu.users_id
left join users du on trips.driver_id = du.users_id
where cu.banned = 'No' and du.banned = 'No' and (trips.status = 'cancelled_by_client' or trips.status='cancelled_by_driver')
group by request_at
having request_at>='2013-10-01' and request_at<='2013-10-03'
| request_at | cnt |
| ---------- | --- |
| 2013-10-01 | 1   |
| 2013-10-03 | 1   |


  • sql实现


select tmp1.request_at 'Day', round(ifnull(tmp2.cnt,0) / tmp1.cnt,2) 'Cancellation Rate'
from (
  #分母
  select trips.request_at,count(*) cnt
  from trips left join users cu on trips.client_id=cu.users_id
  left join users du on trips.driver_id = du.users_id
  where cu.banned = 'No' and du.banned = 'No'
  group by request_at
  having request_at>='2013-10-01' and request_at<='2013-10-03'
) tmp1 left join(
  #分子
  select trips.request_at,count(*) cnt
  from trips left join users cu on trips.client_id=cu.users_id
  left join users du on trips.driver_id = du.users_id
  where cu.banned = 'No' and du.banned = 'No' and (trips.status = 'cancelled_by_client' or trips.status='cancelled_by_driver')
  group by request_at
  having request_at>='2013-10-01' and request_at<='2013-10-03'
 ) tmp2 on tmp1.request_at = tmp2.request_at
相关文章
|
数据采集 XML JSON
获取携程网站上指定景点的用户评论数据
获取携程网站上指定景点的用户评论数据
617 0
|
2月前
|
存储 测试技术 Go
用功能模型实现一个预约系统
【9月更文挑战第6天】本文介绍功能模型描述系统的功能需求和操作逻辑,常用数据流图(DFD)或用例图表示,关注系统如何处理输入、输出、数据存储和计算。在订餐系统中,功能模型涵盖预约界面交互、数据库访问、菜单列表查询及时段表管理。对象模型描述系统中的类和对象,功能模型则描述这些对象的功能实现;动态模型描述运行时行为。通过封装、抽象、继承、多态、交互、职责分离及数据和行为的统一,功能模型提高代码组织性和可维护性,增强系统灵活性和扩展性。
232 19
|
4月前
|
安全 前端开发 数据安全/隐私保护
会员系统03-前台系统UI,利用页面展示大宗农产品价格走势曲线,添加银行卡,前还要进行实名认证,密码密文,隐私安全
会员系统03-前台系统UI,利用页面展示大宗农产品价格走势曲线,添加银行卡,前还要进行实名认证,密码密文,隐私安全
|
5月前
三分钟教会你!客户扫码预约活动后,如何快速核销记录?
我们可以通过“提交成功页设置获取核销凭证”,结合“标记处理进度”功能,对活动预约记录进行手动核销。
|
5月前
|
JavaScript Java 测试技术
基于小程序的民宿预订系统(2024全新定制)
基于小程序的民宿预订系统(2024全新定制)
36 0
|
6月前
|
小程序
智慧医院预约挂号平台源码,可直接线上预约挂号、快捷缴费,查看报告
医院线上预约挂号平台既可以让患者足不出户就可以利用微信进行在线挂号,实现分时段就诊,就诊后也可以直接使用手机微信缴费,还可以通过微信实现查询费用明细及药品清单,检查、检验报告,住院服务等功能。
137 1
智慧医院预约挂号平台源码,可直接线上预约挂号、快捷缴费,查看报告
|
6月前
|
安全
数据感知游客的森林公园游憩需求
数据感知游客的森林公园游憩需求
|
6月前
|
安全 小程序 BI
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
针对设备状态不透明、纸质记录效率低、故障报修不及时等设备点巡检的常见问题,可以在草料二维码上自主搭建涵盖点检、巡检、报修、维修、保养等功能的管理系统,无需安装APP,微信扫码就能查看设备档案、用表单替代纸质检查表。
143 1
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
|
6月前
|
小程序
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
预约挂号管理系统具备后台管理端和用户使用端,用户使用端包括:微信公众号、支付宝小程序。 技术架构:C#+.net+uni-app+ SqlServer 2012+ VS2019 ,自主研发,自主版权,多家三甲医院应用案例,有演示。
122 0
大中型医院线上预约挂号系统源码,对接HIS,支持预约挂号、预约记录、在线支付、医保支付、医保信息、电子报告、住院每日清单查看等功能
|
6月前
|
数据挖掘 定位技术
出租车GPS轨迹、社交软件签到、手机信令数据下载网站整理
出租车GPS轨迹、社交软件签到、手机信令数据下载网站整理
393 2