力扣262(MySQL)-行程和用户(困难)
题目:
表: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;
力扣262(MySQL)-行程和用户(困难)的更多相关文章
- JS数据结构第六篇 --- 二叉树力扣练习题
1.第226题:翻转二叉树 递归+迭代两种实现方式: /** 反转二叉树 * Definition for a binary tree node. * function TreeNode(val) { ...
- C++双指针滑动和利用Vector实现无重复字符的最长子串—力扣算法
题目: 力扣原题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 给定一个字符串, ...
- 力扣---1148. 文章浏览 I
Views 表:+---------------+---------+| Column Name | Type |+---------------+---------+| article_i ...
- 力扣---511. 游戏玩法分析 I
活动表 Activity: +--------------+---------+| Column Name | Type |+--------------+---------+| player ...
- mysql添加一个用户
对于添加mysql的远程访问用户,一定要记得刷新刷新系统权限表不然你怎么弄都是不成功的. insert into mysql.user(Host,User,Password) values(" ...
- mac 安装mysql + 修改root用户密码 + 及报Access denied for user 'root'@'localhost' (using password:YES)解决办法
1.下载MySQL 到mysql的官网http://dev.mysql.com/downloads/mysql/然后在页面中会看到“MySQL Community Server”下方有一个“downl ...
- Mysql创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES)
MySQL创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES) ,多半是因为存在匿名用户, ...
- MySQL创建一个用户,指定一个数据库 授权
Mysql 创建一个用户 hail,密码 hail,指定一个数据库 haildb 给 hail mysql -u root -ppassworduse mysql;insert into user(h ...
- MySQL重置root用户密码的方法
本教程适用于采用Win2003.WinXP操作系统的迅美VPS和云主机产品. 当管理员忘记MySQL密码怎么办?屡次输入密码,仍然提示错误,网站无法正常运行,数据库也无法管理,管理员束手无策. 网站程 ...
- mysql报关于用户密码1045(28000),几种处理方法 (zhuan)
http://blog.itpub.net/29371470/viewspace-1409075/ http://blog.csdn.net/rosten/article/details/250658 ...
随机推荐
- linux 无法找到“/usr/bin/core_perl/gcc” vscode
解决问题的思路 查看有没有gcc,没有安装 有的话就是,修改安装路径就可以? "/usr/bin/core_perl/gcc".修改成Gcc的绝对路径 我的修改是./usr/bin ...
- SQL之QL
从中文语法上来说,应该先写FROM语句比较好理解 基础查询语句 SELECT [DISTINCT] target-list FROM tables WHERE qualification GROUP ...
- AOSP编译成功后关闭终端emulator命令找不到
当我们编译好AOSP系统源码后,可以通过emulator命令打开模拟器,但是当我们关闭终端后,在次打开终端输入emulator命令,提示未找到命令: 此时我们需要重新执行下面语句 source bui ...
- Snackbar源码分析
目录介绍 1.最简单创造方法 1.1 Snackbar作用 1.2 最简单的创建 1.3 Snackbar消失的几种方式 2.源码分析 2.1 Snackbar的make方法源码分析 2.2 对Sna ...
- 【Leetcode】64. 最小路径和
题目(链接) 给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例 1: 输入:grid = [[1 ...
- java 发送 http 请求练习两年半(HttpURLConnection)
1.起一个 springboot 程序做 http 测试: @GetMapping("/http/get") public ResponseEntity<String> ...
- 记录--vue3实现excel文件预览和打印
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印 ...
- 记录--Vue3 + Fabricjs 定制国庆专属头像
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 生在国旗下,长在春风里!国庆将至,采黎为大家带来 定制头像2.0(国庆头像),让我们用代码的形式为祖国庆生!欢迎大家点赞收藏加关注哦 前言 ...
- 记录-一个栗子让你彻底弄懂CSS3补间动画和逐帧动画
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 CSS3提供了Animation关键帧动画,我们在工作中比较常用.但在写CSS动画的时候,其实Animation能实现两种动画模式: 补间 ...
- Python 汇总列数据到行
Python汇总Excel列数据到行(方法一) import pandas as pd # 读取Excel文件 df = pd.read_excel('C:\\Users\\liuchunlin2\\ ...