首页 > 数据库 >力扣262(MySQL)-行程和用户(困难)

力扣262(MySQL)-行程和用户(困难)

时间:2023-03-18 19:23:01浏览次数:42  
标签:10 禁止 取消 用户 力扣 262 MySQL id 2013

题目:

表:Trips

 表:Users

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

写一段 SQL 语句查出 "2013-10-01" 至 "2013-10-03" 期间非禁止用户(乘客和司机都必须未被禁止)的取消率。非禁止用户即 banned 为 No 的用户,禁止用户即 banned 为 Yes 的用户。

返回结果表中的数据可以按任意顺序组织。其中取消率 Cancellation Rate 需要四舍五入保留 两位小数 。

查询结果格式如下例所示。

 

  

解释:
2013-10-01:
- 共有 4 条请求,其中 2 条取消。
- 然而,id=2 的请求是由禁止用户(user_id=2)发出的,所以计算时应当忽略它。
- 因此,总共有 3 条非禁止请求参与计算,其中 1 条取消。
- 取消率为 (1 / 3) = 0.33
2013-10-02:
- 共有 3 条请求,其中 0 条取消。
- 然而,id=6 的请求是由禁止用户发出的,所以计算时应当忽略它。
- 因此,总共有 2 条非禁止请求参与计算,其中 0 条取消。
- 取消率为 (0 / 2) = 0.00
2013-10-03:
- 共有 3 条请求,其中 1 条取消。
- 然而,id=8 的请求是由禁止用户发出的,所以计算时应当忽略它。
- 因此,总共有 2 条非禁止请求参与计算,其中 1 条取消。
- 取消率为 (1 / 2) = 0.50

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/trips-and-users
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

①先将出租车的行程信息表中的client_id、driver_id分别与用户信息表users用join进行连接,并且需要是没有被禁止的用户。然后筛选条件是日期在"2013-10-01" 至 "2013-10-03期间,按照日期进行分组。

②输出取消率(非禁止用户取消的订单数/非禁止用户生成的订单总数),考虑使用avg(),avg(status != completed)表示status不等于完成数换句话说就是状态是被司机或者顾客取消的状态,满足这个条件就为1,不满足就为0。这样每条订单都会得到一个0或者一个1,故avg(status != completed)表示求得多个0和1的平均值,最后得到1的比例===满足条件的订单数量/所有订单的数量,即取消率。

1 select request_at as 'Day', round(avg(status != 'completed'),2) as 'Cancellation Rate'
2 from 
3     trips t1
4     join users u1
5     on (t1.client_id = u1.users_id and u1.banned = 'no')
6     join users u2
7     on(t1.driver_id = u2.users_id and u2.banned = 'no')
8 where request_at between '2013-10-01' and '2013-10-03'
9 group by request_at;

小知识:

①avg(num)函数:相当于num总和/记录数,最终求出平均值。

②round(value,n)函数:对某个数值保留指定小数位数(四舍五入)

round(3.1415926,2)=3.14;
round(3.1415926,3)=3.142;

标签:10,禁止,取消,用户,力扣,262,MySQL,id,2013
From: https://www.cnblogs.com/liu-myu/p/17231525.html

相关文章

  • linux环境下部署mysql环境
    一、部署步骤1、将安装包上传到Linux服务器上(目录随意),然后解压缩2、进入到解压后的目录下,分别执行以下命令安装四个包(严格按照顺序执行)rpm-ivhmysql-community-com......
  • MySQL8设置用户权限报错You have an error in your SQL syntax;right syntax to use ne
    mysql8设置用户权限命令和之前不一样之前:grantallprivilegeson*.*to'myuser'@'%'identifiedby'mypassword'withgrantoption;报错:Youhaveanerrorinyou......
  • CentOS7系统安装MySQL8.0版本
    一、下载1、下载地址:https://dev.mysql.com/downloads/mysql/2、选择对应的系统版本进行下载 3、把如下包上传到指定的安装目录下mysql-community-common-8.0.31-1.el......
  • 力扣 142 环形链表
    判断一个链表有无环,并且如果有环指出入环的位置。1、判断有无环是通过一快一慢指针来判断的。快的指针走每次走两步、慢的指针每次走一步,这样如果没有环的话他俩不会相遇......
  • configure: error: MySQL library not found 报错
     在CentOS系统中,安装zabbix进行configure时会遇到以下问题./configure--enable-server--enable-agent--with-mysql--with-net-snmp --with-jabber--with-libcurl......
  • linux centos yum 单独安装 mysqldump
    在linux下,mysqldump属于mysql的组件,可以安装mysql获取,如:$yum-yinstallmysql-client1一般情况下,是安装mysql的时候获得mysqldump组件,但有时可能已经安装Mar......
  • mysql 表
    文档地址:https://dev.mysql.com/doc/refman/8.0/en/create-table.html红色部分表示可以选配;一、创建表语法创建语法如下,红色部分为可选项;创建:CREATE[TEMPORARY]TAB......
  • MySQL 2023-03-18
    MySQLpractice1.createadatabasewithnameexample,andsetthecharactersettoutf82.altertheexampledatabase,andsetthecharactersettogbk3.dropthe......
  • linux下安装绿色版(glibc版)mysql-5.7.31
    安装依赖库libaio库#yuminstalllibaio-y上传软件包解压#tar-xfmysql-5.7.31-linux-glibc2.12-x86_64.tar.gz软件的安装第一步:创建一个数据库专用账号mysql(其所属组也......
  • mysql 常用的数据类型
    官网文档地址:https://dev.mysql.com/doc/refman/8.0/en/data-types.html常用的数据类型:NumericDataTypesDateandTimeDataTypesStringDataTypes,SpatialData......