262. Trips and Users - 行程和用户 <Hard>

2024-03-26 19:18
文章标签 用户 hard 262 users 行程 trips

本文主要是介绍262. Trips and Users - 行程和用户 <Hard>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Trips 表中存所有出租车的行程信息。每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键。Status 是枚举类型,枚举成员为 (‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)。

+----+-----------+-----------+---------+--------------------+----------+
| 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  |     3     |    12     |    6    |     completed      |2013-10-01|
| 4  |     4     |    13     |    6    | cancelled_by_client|2013-10-01|
| 5  |     1     |    10     |    1    |     completed      |2013-10-02|
| 6  |     2     |    11     |    6    |     completed      |2013-10-02|
| 7  |     3     |    12     |    6    |     completed      |2013-10-02|
| 8  |     2     |    12     |    12   |     completed      |2013-10-03|
| 9  |     3     |    10     |    12   |     completed      |2013-10-03| 
| 10 |     4     |    13     |    12   | cancelled_by_driver|2013-10-03|
+----+-----------+-----------+---------+--------------------+----------+
Users 表存所有用户。每个用户有唯一键 Users_Id。Banned 表示这个用户是否被禁止,Role 则是一个表示(‘client’, ‘driver’, ‘partner’)的枚举类型。

+----------+--------+--------+
| Users_Id | Banned |  Role  |
+----------+--------+--------+
|    1     |   No   | client |
|    2     |   Yes  | client |
|    3     |   No   | client |
|    4     |   No   | client |
|    10    |   No   | driver |
|    11    |   No   | driver |
|    12    |   No   | driver |
|    13    |   No   | driver |
+----------+--------+--------+
写一段 SQL 语句查出 2013年10月1日 至 2013年10月3日 期间非禁止用户的取消率。基于上表,你的 SQL 语句应返回如下结果,取消率(Cancellation Rate)保留两位小数。

取消率的计算方式如下:(被司机或乘客取消的非禁止用户生成的订单数量) / (非禁止用户生成的订单总数)

+------------+-------------------+
|     Day    | Cancellation Rate |
+------------+-------------------+
| 2013-10-01 |       0.33        |
| 2013-10-02 |       0.00        |
| 2013-10-03 |       0.50        |
+------------+-------------------+

 

分析:主表 - Trips 表,

被司机或乘客取消的非禁止用户生成的订单数量'cancelled_by_client' or 'cancelled_by_driver'like 'cancelled_%'

非禁止用户生成的订单总数:需要保证trip表司机与乘客非ban!需要两个User表实例关联对应字段~

 

ps:注意sum与count函数的区别 !

sum(),求和累加,不计算空值;

count(),求行数,空值认为没有此项;

 

# count(IF(a.Status = 'cancelled_by_client' or a.Status = 'cancelled_by_driver' ,1, NULL))
# count(IF(a.Status like 'cancelled_%' ,1, NULL))
# sum(IF(a.Status like 'cancelled_%' ,1, 0)
# count(case when a.Status like 'cancelled_%' then 1 else NULL end)
# sum(a.Status != 'completed')select Request_at as Day,round(sum(IF(a.Status like 'cancelled_%' ,1, 0))/count(*),2) as `Cancellation Rate`
from Trips a
left join Users b on b.Users_Id = a.Client_Id
left join Users c on c.Users_Id = a.Driver_Id
where b.Banned = 'No' and c.Banned = 'No'
and a.Request_at between '2013-10-01' and '2013-10-03'
group by a.Request_at

 

这篇关于262. Trips and Users - 行程和用户 <Hard>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/849574

相关文章

Win10用户必看:最好用最稳定的版本在此,值得一试!

在Win10电脑操作中,用户可以根据的需要,下载安装不同的系统版本。现在,许多用户好奇Win10哪个版本最好用最稳定?接下来小编给大家推荐最好用最稳定的Win10版本,这些系统版本经过优化升级,相信会给大家带来最棒的操作体验感,且下载安装步骤非常简单。   推荐一:Windows10 22H2 X64 官方正式版   点击下载:https://www.xitongzhijia.net/wi

插入用户APC

每个_Kthread都有一个成员Alerted,默认为0,表示是否可以被APC唤醒。所以下面这段程序,即使插入了APC,但是t线程仍然不会执行。 让t线程执行APC函数的方法是使t线程变成可被唤醒状态,使用函数SleepEx(时间,是否可以唤醒线程),第二个参数为true,Alerted设置为1,即可被唤醒;在插入APC时,APC函数就会执行。 #include "stdafx.h"#inc

java NIO 缓存区之内核空间、用户空间和虚拟地址

IO是基于缓存区来做的,所谓的输入和输出就是从缓存区中移入和移出数据。以IO输入为例,首先是用户空间进程向内核请求某个磁盘空间数据,然后内核将磁盘数据读取到内核空间的buffer中,然后用户空间的进程再将内核空间buffer中的数据读取到自身的buffer中,然后进程就可以访问使用这些数据。     内核空间是指操作系统内核运行的空间,是为了保证操作系统内核的能够安全稳定地运行而为内核专

4、SpringMVC 实战小项目【加法计算器、用户登录、留言板、图书管理系统】

SpringMVC 实战小项目 3.1 加法计算器3.1.1 准备⼯作前端 3.1.2 约定前后端交互接⼝需求分析接⼝定义请求参数:响应数据: 3.1.3 服务器代码 3.2 ⽤⼾登录3.2.1 准备⼯作3.2.2 约定前后端交互接⼝3.2.3 实现服务器端代码 3.3 留⾔板实现服务器端代码 3.4 图书管理系统准备后端 3.1 加法计算器 需求: 输⼊两个整数, 点击"点

如何在Linux里进行批量用户操作-创建、删除

因为要在组内进行Linux基础培训,所以就得给他们每人都创建一个使用账号. 虽然我可以一个个手动创建,但是这和程序员优秀的品质“懒”相悖。因此在这里记录我学习批量用户增加和删除的操作过程 回忆一下单个用户操作管理命令是useradd, userdel,用法很简单,就是useradd zs即可,至于创建用户家目录文件夹和设置密码,则需要增加很多的参数。 批量管理用户命令是newusers,

HTML:使用单选框、复选框,让用户选择

语法: <input type="radio/checkbox" value="值" name="名称" checked="checked"/> 1、type:    当type="radio"时,控件为单选框    当type="checkbox"时,控件为复选框 2、value:提交数据到服务器的值(后台程序PHP使用) 3、name:为控件命名,以备后台程序AS

html中,使用表单标签,与用户交互。

网站怎样与用户进行交互?答案是使用HTML表单(form)。表单是可以把浏览者输入的数据传送到服务器端,这样服务器端程序就可以处理表单传过来的数据。 语法:<form method="传送方式" action="服务器文件">,其中传送方式有两种post和get,服务器文件是指输入的数据被传送到的地方,比如一个PHP页面(save.php)。 <form method="post" act

用户管理命令:添加用户useradd,设置用户密码passwd,查看当前用户who.

Linux下添加用户:useradd 用户名 为用户名添加密码:passwd 用户名 查看系统中的所有用户:cat /etc/passwd |cut -f 1 -d : 注意:| 是管道,把cat的输出传给cut处理;后面的cut取出每一行的以:分割的第一栏。 用who命令可以查看当前登录的用户有哪些,一个用户可以多次登录比如有两个root。一个root在它的本地,一个root

Linux学习笔记-目录解释、添加删除用户、更新密码

vim hello.c  --编写c程序 gcc hello.c  --编译c程序 ./a.out      --运行c程序 root 存放root用户的相关文件 是一级目录 home 存放普通用户的相关文件 是二级目录 bin 存放常用命令的目录 sbin 存放的是要有一定的权限才可以使用的命令 mnt 默认挂载光驱和软驱的目录 boot 存放引导相关的文件的目录 etc 存放配置相关的