力扣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 ...
随机推荐
- Git: Host key verification failed(主机密钥验证失败)
换了新电脑Y7000 10750H,之前的项目提示这个,本以为删个什么文件,搜了一阵,没找到答案. 简单粗暴的方法就是再git clone一下,就ok了,这点很不爽.暂时先这么解决了.
- python parser 实例解析
一 parser: 该模块为Python的内部解析器和字节码编译器提供了一个接口.该接口的主要目的是允许Python代码编辑Python表达式的分析树并从中创建可执行代码. 这比试图将任意Python ...
- 网络io与select
我们知道网络IO模型一共有5种,这里我们主要讨论同步IO和select多路复用的情况. 我们先从一个简单的TCP服务器的代码出发,来讨论一下这个是怎么实现的. 一个十分简单的TCP服务器 一个简单的T ...
- [STM32]STM32双机蓝牙串口通信
[STM32]STM32双机蓝牙串口通信 期末考完力,虽然GPA--,但也终于有空搓一搓32了 蓝牙模块配置 我们先配置蓝牙模块,需要主从兼容,配置过程可以参考这个博客:https://blog.cs ...
- 「AntV」基于众源轨迹数据的三维路网生成与L7可视化
1. 引言 L7 地理空间数据可视分析引擎是一种基于 WebGL 技术的地理空间数据可视化引擎,可以用于实现各种地理空间数据可视化应用.L7 引擎支持多种数据源和数据格式,包括 GeoJSON.CSV ...
- Python 变换单词顺序组成新的一句话
需求描述: 现在给出几个单词需要不断变换单词的顺序组成新的一句话 import itertools import pandas as pd # 定义项目列表 items = ['dog', 'appl ...
- 【Spring注解驱动开发】面试官再问你BeanPostProcessor的执行流程,就把这篇文章甩给他!
写在前面 在前面的文章中,我们讲述了BeanPostProcessor的postProcessBeforeInitialization()方法和postProcessAfterInitializati ...
- kubeadm init cannot find network namespace 错误
使用 kubeadm 安装好 weave 网络插件之后,查看 kubelet 输出信息发现如下错误: 4月 25 13:51:48 k8s-master kubelet[1232730]: I0425 ...
- 学习Source Generators之从swagger中生成类
前面学习了一些Source Generators的基础只是,接下来就来实践一下,用这个来生成我们所需要的代码. 本文将通过读取swagger.json的内容,解析并生成对应的请求响应类的代码. 创建项 ...
- 面向OpenHarmony终端的密码安全关键技术
本文转载自 OpenHarmony TSC 官方微信公众号<峰会回顾第17期 | 面向OpenHarmony终端的密码安全关键技术> 演讲嘉宾 | 何道敬 回顾整理 | 廖 涛 排 ...