SQL,力扣题目1635,Hopper 公司查询 I
一、力扣链接
LeetCode_1635
二、题目描述
表: Drivers
+-------------+---------+ | Column Name | Type | +-------------+---------+ | driver_id | int | | join_date | date | +-------------+---------+ driver_id 是该表的主键(具有唯一值的列)。 该表的每一行均包含驾驶员的ID以及他们加入Hopper公司的日期。
表: Rides
+--------------+---------+ | Column Name | Type | +--------------+---------+ | ride_id | int | | user_id | int | | requested_at | date | +--------------+---------+ ride_id 是该表的主键(具有唯一值的列)。 该表的每一行均包含行程ID(ride_id),用户ID(user_id)以及该行程的日期(requested_at)。 该表中可能有一些不被接受的乘车请求。
表: AcceptedRides
+---------------+---------+ | Column Name | Type | +---------------+---------+ | ride_id | int | | driver_id | int | | ride_distance | int | | ride_duration | int | +---------------+---------+ ride_id 是该表的主键(具有唯一值的列)。 该表的每一行都包含已接受的行程信息。 表中的行程信息都在“Rides”表中存在。
编写解决方案以报告 2020 年每个月的以下统计信息:
- 截至某月底,当前在Hopper公司工作的驾驶员数量(
active_drivers)。 - 该月接受的乘车次数(
accepted_rides)。
返回按month 升序排列的结果表,其中month 是月份的数字(一月是1,二月是2,依此类推)。
三、目标拆解

四、建表语句
Create table If Not Exists Drivers (driver_id int, join_date date)
Create table If Not Exists Rides (ride_id int, user_id int, requested_at date)
Create table If Not Exists AcceptedRides (ride_id int, driver_id int, ride_distance int, ride_duration int)
Truncate table Drivers
insert into Drivers (driver_id, join_date) values ('10', '2019-12-10')
insert into Drivers (driver_id, join_date) values ('8', '2020-1-13')
insert into Drivers (driver_id, join_date) values ('5', '2020-2-16')
insert into Drivers (driver_id, join_date) values ('7', '2020-3-8')
insert into Drivers (driver_id, join_date) values ('4', '2020-5-17')
insert into Drivers (driver_id, join_date) values ('1', '2020-10-24')
insert into Drivers (driver_id, join_date) values ('6', '2021-1-5')
Truncate table Rides
insert into Rides (ride_id, user_id, requested_at) values ('6', '75', '2019-12-9')
insert into Rides (ride_id, user_id, requested_at) values ('1', '54', '2020-2-9')
insert into Rides (ride_id, user_id, requested_at) values ('10', '63', '2020-3-4')
insert into Rides (ride_id, user_id, requested_at) values ('19', '39', '2020-4-6')
insert into Rides (ride_id, user_id, requested_at) values ('3', '41', '2020-6-3')
insert into Rides (ride_id, user_id, requested_at) values ('13', '52', '2020-6-22')
insert into Rides (ride_id, user_id, requested_at) values ('7', '69', '2020-7-16')
insert into Rides (ride_id, user_id, requested_at) values ('17', '70', '2020-8-25')
insert into Rides (ride_id, user_id, requested_at) values ('20', '81', '2020-11-2')
insert into Rides (ride_id, user_id, requested_at) values ('5', '57', '2020-11-9')
insert into Rides (ride_id, user_id, requested_at) values ('2', '42', '2020-12-9')
insert into Rides (ride_id, user_id, requested_at) values ('11', '68', '2021-1-11')
insert into Rides (ride_id, user_id, requested_at) values ('15', '32', '2021-1-17')
insert into Rides (ride_id, user_id, requested_at) values ('12', '11', '2021-1-19')
insert into Rides (ride_id, user_id, requested_at) values ('14', '18', '2021-1-27')
Truncate table AcceptedRides
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('10', '10', '63', '38')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('13', '10', '73', '96')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('7', '8', '100', '28')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('17', '7', '119', '68')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('20', '1', '121', '92')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('5', '7', '42', '101')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('2', '4', '6', '38')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('11', '8', '37', '43')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('15', '8', '108', '82')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('12', '8', '38', '34')
insert into AcceptedRides (ride_id, driver_id, ride_distance, ride_duration) values ('14', '1', '90', '74')
五、过程分析
1、计算每月活跃的驾驶员数

2、计算每月接受的乘车次数

3、把1和2连接在一起

六、代码实现
with recursive t1(n) as(select 1union allselect n + 1 from t1 where n + 1 <= 12
) -- 12个月份
-- 卡点t2
,t2 as(select n, join_date, month(join_date) m, count(driver_id) over(order by n) + (select count(driver_id) from drivers where join_date < '2020-01-01') sum_cnt -- 加上2020年之前的驾驶员数作累加from t1 left join Drivers d on t1.n = month(d.join_date) and year(join_date) = '2020'
-- 过滤2020年的数据并与当年所有的月份相连,根据图示理出思路
)
,t3 as(select n, count(ride_id) cnt from t1 left join(select requested_at, a.ride_idfrom Rides r left join AcceptedRides a on r.ride_id = a.ride_idwhere year(requested_at) = '2020') bon t1.n = month(b.requested_at)group by n
)
select t2.n month, max(sum_cnt) active_drivers, max(cnt) accepted_rides -- 如果月内多于一天出现新增驾驶员/新增接受次数
from t2 join t3 on t2.n = t3.n
group by month;
七、结果验证

八、小结
1、CTE表达式 + 递归 + 子查询
2、日期函数year()、month(),聚合函数count()、max()
相关文章:
SQL,力扣题目1635,Hopper 公司查询 I
一、力扣链接 LeetCode_1635 二、题目描述 表: Drivers ---------------------- | Column Name | Type | ---------------------- | driver_id | int | | join_date | date | ---------------------- driver_id 是该表的主键(具有唯一值的列)。 该表的每一行…...
Android 分区相关介绍
目录 一、MTK平台 1、MTK平台分区表配置 2、MTK平台刷机配置表 3、MTK平台分区表配置不生效 4、Super分区的研究 1)Super partition layout 2)Block device table 二、高通平台 三、展锐平台 四、相关案例 1、Super分区不够导致编译报错 经验…...
JMeter监听器与压测监控之 InfluxDB
1. 简介 在本文中,我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB,并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库,而 JMeter 是一个开源的性能测试工具,可以用于对各种服务进行负载测试和性能监…...
信息安全管理与评估赛项(网络安全)--应急响应专项训练
web1 题目来源:https://mp.weixin.qq.com/s/89IS3jPePjBHFKPXnGmKfA 题目 1.攻击者的shell密码2.攻击者的IP地址3.攻击者的隐藏账户名称4.攻击者挖矿程序的矿池域名(仅域名)5.有实力的可以尝试着修复漏洞靶机 用户:administrator密码:Zgsfadmin.com题解 攻击者…...
ElasticSearch学习篇18_《检索技术核心20讲》LevelDB设计思想
目录 一些常见的设计思想以及基于LSM树的LevelDB是如何利用这些设计思想优化存储、检索效率的。 几种常见的设计思想 索引和数据分离减少磁盘IO读写分离分层思想 LevelDB的设计思想 读写分离设计分层设计与延迟合并LRU缓存加速检索 几种常见设计思想 索引与数据分离 索引…...
使用 FFmpeg 提取音频的详细指南
FFmpeg 是一个开源的多媒体处理工具,支持视频、音频的编码、解码、转换等多种功能。通过 FFmpeg,提取视频中的音频并保存为各种格式非常简单和高效。这在音视频剪辑、媒体处理、转码等场景中具有广泛的应用。 本文将详细讲解如何使用 FFmpeg 提取音频&a…...
中国省级新质生产力发展指数数据(任宇新版本)2010-2023年
一、测算方式:参考C刊《财经理论与实践》任宇新(2024)老师的研究,新质生产力以劳动者劳动资料劳动对象及其优化组合的质变为 基本内涵,借 鉴 王 珏 和 王 荣 基 的 做 法构建新质生产力发展水平评价指标体系如下所示&a…...
C++设计模式:建造者模式(Builder) 房屋建造案例
什么是建造者模式? 建造者模式是一种创建型设计模式,它用于一步步地构建一个复杂对象,同时将对象的构建过程与它的表示分离开。简单来说: 它将复杂对象的“建造步骤”分成多部分,让我们可以灵活地控制这些步骤。通过…...
Python 快速入门(上篇)❖ Python基础知识
Python 基础知识 Python安装**运行第一个程序:基本数据类型算术运算符变量赋值操作符转义符获取用户输入综合案例:简单计算器实现Python安装** Linux安装: yum install python36 -y或者编译安装指定版本:https://www.python.org/downloads/source/ wget https://www.pyt…...
string接口的模拟实现
文章目录 一. string底层逻辑演示声明和定义分开 二. size()三. operator[]四. 迭代器四. const迭代器五. 预留空间(reserve)六. 尾插一个字符push_back七. 尾插一个字符串append八. operator九. operator 一. string底层逻辑 (1)为了和库里面…...
sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面
sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面 前言 -r 等效 -E , 启用扩展正则表达式 -E是新叫法,更统一,能增强可移植性 , 但老系统,比如 CentOS-7 的 sed 只能用 -r ### Ubuntu24.04-E, -r, --regexp-extendeduse extended regular expressions in the script(fo…...
Verilog HDL可综合与不可综合语句
目录 什么是逻辑综合 可综合语句 不可综合语句 逻辑综合建模建议 综合流程 什么是逻辑综合 所谓逻辑综合就是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。 标准单元库(工艺库)可以包含简单的…...
tomcat 后台部署 war 包 getshell
1. tomcat 后台部署 war 包 getshell 首先进入该漏洞的文件目录 使用docker启动靶场环境 查看端口的开放情况 访问靶场:192.168.187.135:8080 访问靶机地址 http://192.168.187.135:8080/manager/html Tomcat 默认页面登录管理就在 manager/html 下,…...
网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操解析1
文章目录 1、RAID6配置指南(大致步骤)2、注意事项3、截图和视频 网络云计算】2024第47周-每日【2024/11/21】周考-实操题-RAID6实操 RAID6是一种在存储系统中实现数据冗余和容错的技术,其最多可以容忍两块磁盘同时损坏而不造成数据丢失。RAID…...
前端面试题大汇总:React 篇
基础知识 1. 什么是 React?它的主要特点是什么? React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它主要用于构建单页应用程序(SPA)和复杂的用户界面。React 的主要特点包括: 组件…...
【prism】遇到一个坑,分享!
背景 我通用prism的方式写了一个弹窗,弹窗绑定一个 Loaded 事件,但是Loaded事件一直不触发!!! 具体过程 我的loaded事件也是通过命令的方式绑定的: <i:Interaction.Triggers><i:EventTrigger EventName="Loaded...
Python+Selenium+Pytest+Allure+ Jenkins webUI自动化框架
Python+Selenium+Pytest+Allure+ Jenkins webUI自动化框架 WebUI接口框架使用的工具...
智象未来(HiDream.ai)技术赋能,开启AR眼镜消费时代
Rokid Jungle 2024合作伙伴暨新品发布会于近日隆重举行,标志着AR眼镜跑步进入消费时代,更预示着ARAI技术融合的新篇章。智象未来(HiDream.ai),作为多模态生成式人工智能技术的领跑者,与Rokid的深度合作&…...
element dialog 2层弹窗数据同步问题
注意:本帖为公开技术贴,不得用做任何商业用途 element dialog 2层弹窗数据同步问题 如果嵌套dialog,也就是多层dialog嵌套 2个input,key用同样的值 会导致内外2层dialog,用相同key值的input会数据同步 原因如下&a…...
向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)
1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典,右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本,很灵活,这里先介绍第一个版本,也是原始版本 Shingling one-hot …...
前端手写电子签系统实战:SVG为何是合同图片合成的最优解
一、前端手写电子签系统核心需求拆解 在开发手写电子签系统时,前端需满足以下核心业务与技术需求,这也是方案选型的核心依据: 高清无损:合同属于正式法律文件,签名、填写的字段文字需保证任意缩放、打印后均清晰无失真…...
首批入驻!深圳开源远航正式入驻前海“数智空间”!大湾区人工智能出海联盟揭牌成立!
4月2日,深圳开源远航科技有限公司(CSDN全资子公司)开业暨大湾区人工智能出海联盟揭牌仪式在深圳前海卓越金融中心举行。开源远航作为首批企业,正式入驻前海科创集团旗下的前海“数智空间”。首批企业入驻依托“数智空间”共建AI软…...
程序员必看:代码注释规范与重构实战指南
1. 程序员入职第一天的震撼教育那天早上九点整,我刷完门禁卡走进新公司的办公区,工位上已经摆好了全新的MacBook Pro和一台4K显示器。行政小姐姐热情地带着我走完入职流程后,我迫不及待地打开代码仓库,准备熟悉项目。就在我点开核…...
SEO_如何通过内容SEO获取稳定流量的关键方法
SEO:如何通过内容SEO获取稳定流量的关键方法 在当今数字化时代,如何通过内容SEO获取稳定流量成为了许多企业和网站运营者关注的焦点。内容SEO不仅能够提升网站的自然搜索排名,还能为网站带来长期的、可持续的流量。具体应该如何通过内容SEO获取稳定流量…...
**发散创新:基于同态加密的隐私保护计算在Python中的实战实现**随
发散创新:基于同态加密的隐私保护计算在Python中的实战实现 随着数据安全需求的不断升级,同态加密(Homomorphic Encryption) 正从理论走向落地。它允许对加密数据直接进行计算,结果解密后与明文计算一致——这为云计算…...
Muon最佳实践:10个提升开发效率的实用技巧
Muon最佳实践:10个提升开发效率的实用技巧 【免费下载链接】muon GPU based Electron on a diet 项目地址: https://gitcode.com/gh_mirrors/mu/muon Muon作为一款基于GPU的轻量级Electron替代方案,采用Golang开发并使用Ultralight引擎࿰…...
【架构师通关】理发店排队 + 车库停车,大白话秒懂“进程状态模型”与“PV操作
兄弟们,操作系统的进程管理一直是软考里最让人头疼的“硬骨头” 🦴。什么“阻塞”、“挂起”、“信号量”、“PV操作”,听着就像天书 📚。 但今天,飞哥绝不跟你拽学术名词!咱们就通过“去理发店剪个头” &a…...
新手福音:在快马平台体验vscode codex式辅助,轻松写出第一行代码
最近在学编程,发现很多新手(包括我自己)最头疼的就是面对空白的编辑器不知道从哪下手。传统的学习方式要么是直接看教程照抄代码,要么是硬啃文档记语法,很容易劝退。直到我发现了InsCode(快马)平台的智能辅助功能&…...
PCB封装核心构成—焊盘,电气连接的基石
在电子设计与制造领域,PCB 封装是连接虚拟电路设计与实体元器件的关键纽带,而焊盘则是 PCB 封装中最核心、最基础的构成要素,堪称电气连接的 “基石”。没有精准设计的焊盘,元器件与电路板之间的电气连接便无从谈起,整…...
颠覆式Alienware设备控制:500KB轻量工具实现10倍性能提升与个性化体验
颠覆式Alienware设备控制:500KB轻量工具实现10倍性能提升与个性化体验 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 当你启动Alienware电…...
