首页 > 数据库 >SQL,力扣题目262,行程和用户

SQL,力扣题目262,行程和用户

时间:2024-11-10 17:14:42浏览次数:3  
标签:10 insert into driver 力扣 262 client SQL id

一、力扣链接

LeetCode_262

二、题目描述

表:Trips

+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| id          | int      |
| client_id   | int      |
| driver_id   | int      |
| city_id     | int      |
| status      | enum     |
| request_at  | varchar  |     
+-------------+----------+
id 是这张表的主键(具有唯一值的列)。
这张表中存所有出租车的行程信息。每段行程有唯一 id ,其中 client_id 和 driver_id 是 Users 表中 users_id 的外键。
status 是一个表示行程状态的枚举类型,枚举成员为(‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’) 。

表:Users

+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| users_id    | int      |
| banned      | enum     |
| role        | enum     |
+-------------+----------+
users_id 是这张表的主键(具有唯一值的列)。
这张表中存所有用户,每个用户都有一个唯一的 users_id ,role 是一个表示用户身份的枚举类型,枚举成员为 (‘client’, ‘driver’, ‘partner’) 。
banned 是一个表示用户是否被禁止的枚举类型,枚举成员为 (‘Yes’, ‘No’) 。

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

编写解决方案找出 "2013-10-01" 至 "2013-10-03" 期间非禁止用户(乘客和司机都必须未被禁止)的取消率。非禁止用户即 banned 为 No 的用户,禁止用户即 banned 为 Yes 的用户。其中取消率 Cancellation Rate 需要四舍五入保留 两位小数 。

返回结果表中的数据 无顺序要求 。

三、目标拆解

四、建表语句

Create table If Not Exists Trips (id int, client_id int, driver_id int, city_id int, status ENUM('completed', 'cancelled_by_driver', 'cancelled_by_client'), request_at varchar(50))
Create table If Not Exists Users (users_id int, banned varchar(50), role ENUM('client', 'driver', 'partner'))
Truncate table Trips
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('1', '1', '10', '1', 'completed', '2013-10-01')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('2', '2', '11', '1', 'cancelled_by_driver', '2013-10-01')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('3', '3', '12', '6', 'completed', '2013-10-01')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('4', '4', '13', '6', 'cancelled_by_client', '2013-10-01')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('5', '1', '10', '1', 'completed', '2013-10-02')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('6', '2', '11', '6', 'completed', '2013-10-02')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('7', '3', '12', '6', 'completed', '2013-10-02')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('8', '2', '12', '12', 'completed', '2013-10-03')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('9', '3', '10', '12', 'completed', '2013-10-03')
insert into Trips (id, client_id, driver_id, city_id, status, request_at) values ('10', '4', '13', '12', 'cancelled_by_driver', '2013-10-03')
Truncate table Users
insert into Users (users_id, banned, role) values ('1', 'No', 'client')
insert into Users (users_id, banned, role) values ('2', 'Yes', 'client')
insert into Users (users_id, banned, role) values ('3', 'No', 'client')
insert into Users (users_id, banned, role) values ('4', 'No', 'client')
insert into Users (users_id, banned, role) values ('10', 'No', 'driver')
insert into Users (users_id, banned, role) values ('11', 'No', 'driver')
insert into Users (users_id, banned, role) values ('12', 'No', 'driver')
insert into Users (users_id, banned, role) values ('13', 'No', 'driver')

五、过程分析

1、过滤banned为NO的数据

2、按日期分组,计算订单数,根据结果字段命名

六、代码实现

select request_at Day,
       round(count(case when status in ('cancelled_by_driver', 'cancelled_by_client') then id else null end)/count(id), 2) `Cancellation Rate`
from Trips t join Users u
on t.client_id = u.users_id
where request_at between '2013-10-01' and '2013-10-03'
and client_id in (select users_id from users where banned = 'No')
and driver_id in (select users_id from users where banned = 'No')
group by request_at;

七、结果验证

八、小结

1、子查询 + group by + count() + round()

2、主要是过滤出乘客和司机都未被禁止的数据

标签:10,insert,into,driver,力扣,262,client,SQL,id
From: https://blog.csdn.net/m0_59659684/article/details/143518944

相关文章

  • 45-best-time-to-buy-and-sell-stock-with-cooldown 力扣 714. 买卖股票的最佳时机包
    买卖股票系列【leetcode】40-best-time-to-buy-and-sell-stock力扣121.买卖股票的最佳时机【leetcode】41-best-time-to-buy-and-sell-stock-ii力扣122.买卖股票的最佳时机II【leetcode】42-best-time-to-buy-and-sell-stock-iii力扣123.买卖股票的最佳时机II......
  • 数据库基础(11) . SQL脚本
    1.概述SQL脚本:是由一系列SQL命令组成在一起执行以完成特定的任务。SQL脚本通常用于执行批量操作,如创建数据库对象(表、视图、存储过程等)、插入数据、执行批处理更新等。1.1.标识符命名对象起名(变量、常量、函数等)、注意命名规则1.字符集和大小写敏感性字符集:标识符......
  • 【数据库系列】postgresql链接详解
    ......
  • 失物招领信息管理系统(含源码+sql+视频导入教程+文档+PPT)
    失物招领信息管理系统1、项目介绍失物招领信息管理系统1拥有两种角色,分别为管理员和用户,具体功能如下:管理员:招领信息管理、寻物信息管理、留言信息管理、申请信息管理、物品类型管理、学生管理、管理员管理、公告管理用户:招领信息查看与发布、寻物信息查看与发布、留言......
  • 基于SSM的书店图书销售管理系统(含源码+sql+视频导入教程+文档+PPT)
    1、项目介绍书店图书销售管理系统3具有两种个角色,分别为管理员和用户,具体功能如下:管理员:书籍的增删改查、书籍类型的增删改查、用户的增删改查、订单审核、订单详情查看等功能用户:书籍的模糊查询、购买数据、购物车、结算、注册登录等功能2·、项目技术后端框架:SSM(Spr......
  • 力扣题库Day3(持续更新中...)
    2024/11/10x的平方根:要求:给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。注意:不允许使用任何内置指数函数和算符,例如 pow(x,0.5) 或者 x**0.5 。classSolution{publicintmySqrt(......
  • 基于深度学习+pytorch+PyQt6+MySQL的口罩佩戴识别系统
    前言本系统是一个完整的基于深度学习+pytorch+PyQt6+MySQL的口罩佩戴识别系统。包括LeNet、AlexNet、VGG、GoogLeNet、ResNet、MobileNetV2网络模型。可以直接训练、测试、使用。也就是说,它不仅仅是一个口罩佩戴识别系统。它可以是任意识别系统!!系统演示视频登陆注册系......
  • 基于深度学习+pytorch+PyQt6+MySQL的农作物识别系统
    前言本系统是一个完整的基于深度学习+pytorch+PyQt6+MySQL的农作物识别系统。包括LeNet、AlexNet、VGG、GoogLeNet、ResNet、MobileNetV2网络模型。可以直接训练、测试、使用。也就是说,它不仅仅是一个农作物识别系统。它可以是任意识别系统!!系统演示视频登陆注册系统使......
  • 《高级 SQL 技巧:提升查询效率与灵活性》
    在SQL中,有许多高级技巧可以帮助开发人员和数据库管理员更高效、更灵活地执行复杂的查询和操作。这些技巧不仅可以提高查询性能,还能增强SQL的可读性和可维护性。以下是一些常见的高级SQL技巧:1. 窗口函数(WindowFunctions)窗口函数是SQL中非常强大的功能,用于在查询......
  • 4,MySQL数据库的设计
    准备阶段创建用户CREATEUSER'luck'@'localhost'IDENTIFIEDBY'1111';GRANTALLPRIVILEGESONtest_db.*TO'luck'@'localhost';root修改普通用户权限GRANTALLPRIVILEGESON.TO'existinguser'@'%'IDEN......