LeetCode数据库题目集
聚焦数据库核心知识,精选典型习题助力编程能力提升。
秋说
聚焦全栈开发与网络安全实战 | 欢迎订阅优质付费专栏,专注打造「新手能看懂、学完能实战」的全栈技术教程。商务合作/项目与毕设指导/产品推广/技术支持,可私信沟通。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【LeetCode | 数据库】组合两个表
addressId 是该表的主键(具有唯一值的列)。该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息。编写解决方案,报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为 null 。以 任意顺序 返回结果表。原创 2025-09-04 15:39:40 · 321 阅读 · 0 评论 -
【LeetCode | 数据库】寻找忠实客户
编写一个解决方案来查找 忠实客户。如果满足下述所有条件,可以认为该客户是 忠实 客户:进行了 至少 3 次购买交易。活跃了 至少 30 天。他们的 退款率 少于 20%。原创 2025-09-04 15:38:13 · 206 阅读 · 0 评论 -
【LeetCode | 数据库】查找有两极分化观点的书
编写一个解决方案来找到具有 两极分化观点 的书 - 同时获得不同读者极高和极低评分的书籍。如果一本书有至少一个大于等于 4 的评分和至少一个小于等于 2 的评分则是有两极分化观点的书。只考虑有至少 5 次阅读事件的书籍。按 highest_rating - lowest_rating 计算评分差幅 rating spread按极端评分(评分小于等于 2 或大于等于 4)的数量除以总阅读事件计算 极化得分 polarization score。只包含 极化得分大于等于 0.6 的书原创 2025-09-04 15:30:09 · 181 阅读 · 0 评论 -
【LeetCode | 数据库】查找库存不平衡的店铺
编写一个解决方案来查找库存不平衡的商店 - 即最贵商品的库存比最便宜商品少的商店。对于每个商店,识别 最贵的商品(最高价格)及其数量,如果有多个最贵的商品则选取数量最多的一个。对于每个商店,识别 最便宜的商品(最低价格)及其数量,如果有多个最便宜的物品则选取数量最多的一个。如果最贵商品的数量 少于 最便宜商品的数量,则商店存在库存不平衡。按(最便宜商品的数量/最贵商品的数量)计算 不平衡比。不平衡比 舍入到 2 位 小数原创 2025-09-04 15:28:32 · 291 阅读 · 0 评论 -
【LeetCode | 数据库】查找超预订员工
编写一个解决方案来查找会议密集型的员工 - 在任何给定周内,花费超过 50% 工作时间在会议上的员工。假定一个标准工作周是 40 小时,计算每位员工 每周(周一至周日)的 总会议小时数员工如果每周会议时间超过 20 小时(40 小时工作时间的 50%),则被视为会议密集型。统计每位员工有多少周是会议密集周。仅查找 至少 2 周会议密集的员工。原创 2025-09-04 15:23:09 · 233 阅读 · 0 评论 -
【LeetCode | 数据库】寻找燃油效率提升的驾驶员
编写一个解决方案,通过 比较 司机在 上半年 和 下半年 的 平均燃油效率 来找出 燃油效率有所提高 的司机。通过 distance_km / fuel_consumed 计算 每次 行程的 燃油效率。上半年:一月到六月,下半年:七月到十二月。只包含在上半年和下半年都有行程的司机。通过(second_half_avg - first_half_avg)计算 提升效率。将所有结果 四舍五入 到小数点后 2 位。原创 2025-09-04 15:21:23 · 224 阅读 · 0 评论 -
【LeetCode | 数据库】寻找 COVID 康复患者
每一行代表一个 COVID 检测结果。结果可以是阳性、阴性或不确定。编写一个解决方案以找到从 COVID 中康复的患者——那些曾经检测呈阳性但后来检测呈阴性的患者。患者如果 至少有一次阳性 检测结果后,在 之后的日期 至少有一次 阴性 检测结果,则被认为已康复。计算从 首次阳性检测 结果到 该阳性检测 后的 首次阴性检测结果 之间的 康复时间(以天为单位)。仅包括 同时具有阳性及阴性检测结果的患者。返回结果表以 recovery_time 升序 排序,然后以 patient_name 升序 排序。原创 2025-09-04 15:15:43 · 251 阅读 · 0 评论 -
【LeetCode | 数据库】寻找持续进步的员工
每一行表示一名员工的绩效评估。评分在 1-5 的范围内,5分代表优秀,1分代表较差。编写一个解决方案,以找到在过去三次评估中持续提高绩效的员工。员工 至少需要 3 次评估 才能被考虑员工过去的 3 次评估,评分必须 严格递增(每次评价都比上一次好)根据 review_date 为每位员工分析最近的 3 次评估。进步分数 为最后 3 次评估中最后一次评分与最早一次评分之间的差值返回结果表以 进步分数 降序 排序,然后以 名字 升序 排序。原创 2025-09-04 15:13:54 · 236 阅读 · 0 评论 -
【LeetCode | 数据库】查找无可用副本的书籍
每一行代表一笔借阅交易并且如果这本书目前被借出并且还没有被归还,return_date 为 NULL。编写一个解决方案以找到 所有 当前被借出(未归还) 且图书馆中 无可用副本 的书籍。如果存在一条借阅记录,其 return_date 为 NULL,那么这本书被认为 当前是借出的。返回结果表按当前借阅者数量 降序 排列,然后按书名 升序 排列。原创 2025-09-04 10:56:31 · 254 阅读 · 0 评论 -
【LeetCode | 数据库】季节性销售分析
product_id 是这张表的唯一主键。每一行包含一件产品的信息,包括它的名字和分类。编写一个解决方案来找到每个季节最受欢迎的产品分类。季节定义如下:冬季:十二月,一月,二月春季:三月,四月,五月;夏季:六月,七月,八月;秋季:九月,十月,十一月原创 2025-09-04 10:54:26 · 294 阅读 · 0 评论 -
【LeetCode | 数据库】查找类别推荐对
查找所有 类别对(其中 category1 < category2)。对于 每个类别对,确定 同时 购买了两类别产品的 不同用户 数量。如果至少有 3 个不同的客户购买了两个类别的产品,则类别对被视为 可报告的。返回可报告类别对的结果表以 customer_count 降序 排序,并且为了防止排序持平,以 category1 字典序 升序 排序,然后以 category2 升序 排序。结果格式如下所示。原创 2025-09-04 10:52:42 · 200 阅读 · 0 评论 -
【LeetCode | 数据库】查找推荐产品对
每一行表示一个产品的类别和价格。亚马逊希望根据 共同购买模式 实现 “购买此商品的用户还购买了...” 功能。编写一个解决方案以实现:识别 被同一客户一起频繁购买的 不同 产品对(其中 product1_id < product2_id)对于 每个产品对,确定有多少客户购买了这两种产品。如果 至少有 3 位不同的 客户同时购买了这两种产品,则认为该 产品对 适合推荐。返回结果表以 customer_count 降序 排序,并且为了避免排序持平,以 product1_id 升序 排序原创 2025-09-04 10:51:18 · 211 阅读 · 0 评论 -
【LeetCode | 数据库】分析订阅转化
每一行表示一个用户在特定日期的活动。订阅服务想要分析用户行为模式。公司提供7天免费试用,试用结束后,用户可以选择订阅 付费计划 或 取消。编写解决方案:查找从免费试用转为付费订阅的用户。计算每位用户在 免费试用 期间的 平均每日活动时长(四舍五入至小数点后 2 位)。计算每位用户在 付费 订阅期间的 平均每日活动时长(四舍五入到小数点后 2 位)。返回结果表以 user_id 升序 排序。原创 2025-09-04 10:48:21 · 195 阅读 · 0 评论 -
【LeetCode | 数据库】分析组织层级
每一行包含关于一名员工的信息,包括他们的 ID,姓名,他们经理的 ID,薪水和部门。顶级经理(CEO)的 manager_id 是空的。编写一个解决方案来分析组织层级并回答下列问题:层级:对于每名员工,确定他们在组织中的层级(CEO 层级为 1,CEO 的直接下属员工层级为 2,以此类推)。团队大小:对于每个是经理的员工,计算他们手下的(直接或间接下属)总员工数。薪资预算:对于每个经理,计算他们控制的总薪资预算(所有手下员工的工资总和,包括间接下属,加上自己的工资)。返回结果表以 层级 升序原创 2025-09-04 10:46:58 · 205 阅读 · 0 评论 -
【LeetCode | 数据库】DNA模式识别
每一行包含一个 DNA 序列以一个字符(A,T,G,C)组成的字符串表示以及它所采集自的物种。生物学家正在研究 DNA 序列中的基本模式。编写一个解决方案以识别具有以下模式的 sample_id:以 ATG 开头 的序列(一个常见的 起始密码子);以 TAA,TAG 或 TGA 结尾 的序列(终止密码子);包含基序 ATAT 的序列(一个简单重复模式);有 至少 3 个连续 G 的序列(如 GGG 或 GGGG)原创 2025-09-01 20:12:39 · 218 阅读 · 0 评论 -
【LeetCode | 数据库】查找具有有效序列号的产品
这张表的每一行表示一个产品的唯一 ID,名字和描述。编写一个解决方案来找到所有描述中 包含一个有效序列号 模式的产品。一个有效序列号符合下述规则:以 SN 字母开头(区分大小写)。后面有恰好 4 位数字。接着是一个短横(-), 短横后面还有另一组 4 位数字。序列号必须在描述内(可能不在描述的开头)原创 2025-09-01 20:08:57 · 201 阅读 · 0 评论 -
【LeetCode | 数据库】查找无效的IP地址
编写一个解决方案来查找 无效的 IP 地址。一个 IPv4 地址如果满足以下任何条件之一,则无效:任何 8 位字节中包含大于 255 的数字。任何 8 位字节中含有 前导零(如 01.02.03.04)。少于或多于 4 个 8 位字节。返回结果表分别以 invalid_count,ip 降序 排序。原创 2025-09-01 20:03:44 · 275 阅读 · 0 评论 -
【LeetCode | 数据库】查找合法邮箱
每一行包含用户的唯一 ID 和邮箱地址。编写一个解决方案来查找所有 合法邮箱地址。一个合法的邮箱地址符合下述条件:只包含一个 @ 符号。以 .com 结尾。@ 符号前面的部分只包含 字母数字 字符和 下划线。@ 符号后面与 .com 前面的部分 包含 只有字母 的域名。返回结果表以 user_id 升序 排序。原创 2025-09-01 20:01:38 · 272 阅读 · 0 评论 -
【LeetCode | 数据库】查找进步的学生
每一行包含有关学生在特定考试日期特定科目成绩的信息。分数范围从 0 到 100(包括边界)。编写一个解决方案来查找 进步的学生。如果 同时 满足以下两个条件,则该学生被认为是进步的:在 同一科目 至少参加过两个不同日期的考试。他们在该学科 最近的分数 比他们 第一次该学科考试的分数更高。原创 2025-09-01 20:00:07 · 261 阅读 · 0 评论 -
【LeetCode | 数据库】首字母大写 ||
每一行包含一个不同的 ID 以及对应的文本内容。编写一个解决方案来根据下面的规则来转换 content_text 列中的文本:将每个单词的 第一个字母 转换为 大写,其余字母 保持小写。特殊处理包含特殊字符的单词:对于用短横 - 连接的词语,两个部份 都应该 大写(例如,top-rated → Top-Rated)所有其他 格式 和 空格 应保持 不变。返回结果表同时包含原始的 content_text 以及根据上述规则修改后的文本。原创 2025-09-01 19:57:23 · 252 阅读 · 0 评论 -
【LeetCode | 数据库】奇数和偶数交易
transactions_id 列唯一标识了表中的每一行。这张表的每一行包含交易 id,金额总和和交易日期。编写一个解决方案来查找每天 奇数 交易金额和 偶数 交易金额的 总和。如果某天没有奇数或偶数交易,显示为 0。返回结果表以 transaction_date 升序 排序。原创 2025-09-01 19:53:29 · 251 阅读 · 0 评论 -
【LeetCode | 数据库】每位教师所教授的科目种类的数量
在 SQL 中,(subject_id, dept_id) 是该表的主键。该表中的每一行都表示带有 teacher_id 的教师在系 dept_id 中教授科目 subject_id。查询每位老师在大学里教授的科目种类的数量。原创 2025-08-22 12:56:51 · 308 阅读 · 0 评论 -
【LeetCode | 数据库】上级经理已离职的公司员工
查找这些员工的id,他们的薪水严格少于$30000 并且他们的上级经理已离职。当一个经理离开公司时,他们的信息需要从员工表中删除掉,但是表中的员工的manager_id 这一列还是设置的离职经理的id 。返回的结果按照employee_id 从小到大排序。查询结果如下所示。原创 2025-08-22 12:54:19 · 299 阅读 · 0 评论 -
【LeetCode | 数据库】丢失信息的雇员
编写解决方案,找到所有 丢失信息 的雇员 id。当满足下面一个条件时,就被认为是雇员的信息丢失:雇员的 姓名 丢失了,或者雇员的 薪水信息 丢失了 返回这些雇员的 id employee_id , 从小到大排序 。原创 2025-08-22 12:52:51 · 216 阅读 · 0 评论 -
【LeetCode | 数据库】确认率
该表的每一行都表示ID为user_id的用户在time_stamp请求了一条确认消息,该确认消息要么被确认('confirmed'),要么被过期('timeout')。用户的 确认率 是 'confirmed' 消息的数量除以请求的确认消息的总数。没有请求任何确认消息的用户的确认率为 0 。确认率四舍五入到 小数点后两位 。编写一个SQL查询来查找每个用户的 确认率 。原创 2025-08-22 12:51:29 · 263 阅读 · 0 评论 -
【LeetCode | 数据库】按分类统计薪水
查询每个工资类别的银行账户数量。 工资类别如下:"Low Salary":所有工资 严格低于 20000 美元。"Average Salary": 包含 范围内的所有工资 [$20000, $50000] 。"High Salary":所有工资 严格大于 50000 美元。结果表 必须 包含所有三个类别。 如果某个类别中没有帐户,则报告 0 。按 任意顺序 返回结果表。原创 2025-08-22 12:49:54 · 253 阅读 · 0 评论 -
【LeetCode | 数据库】2020年最后一次登录
编写解决方案以获取在 2020 年登录过的所有用户的本年度 最后一次 登录时间。结果集 不 包含 2020 年没有登录过的用户。返回的结果集可以按 任意顺序 排列。原创 2025-08-22 12:48:25 · 323 阅读 · 0 评论 -
【LeetCode | 数据库】计算特殊奖金
编写解决方案,计算每个雇员的奖金。如果一个雇员的 id 是 奇数 并且他的名字不是以 'M' 开头,那么他的奖金是他工资的 100% ,否则奖金为 0 。返回的结果按照 employee_id 排序。原创 2025-08-22 12:46:19 · 242 阅读 · 0 评论 -
【LeetCode | 数据库】每个产品在不同商店的价格
请你重构 Products 表,查询每个产品在不同商店的价格,使得输出的格式变为(product_id, store, price) 。如果这一产品在商店里没有出售,则不输出这一行。输出结果表中的 顺序不作要求 。原创 2025-08-22 12:44:52 · 314 阅读 · 0 评论 -
【LeetCode | 数据库】员工的直属部门
一个员工可以属于多个部门。当一个员工加入超过一个部门的时候,他需要决定哪个部门是他的直属部门。请注意,当员工只加入一个部门的时候,那这个部门将默认为他的直属部门,虽然表记录的值为'N'.请编写解决方案,查出员工所属的直属部门。原创 2025-08-22 12:43:37 · 263 阅读 · 0 评论 -
【LeetCode | 数据库】换座位
id 是该表的主键(唯一值)列。该表的每一行都表示学生的姓名和 ID。ID 序列始终从 1 开始并连续增加。编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。原创 2025-08-18 16:11:15 · 251 阅读 · 0 评论 -
【LeetCode | 数据库】可回收且低脂的产品
product_id 是该表的主键(具有唯一值的列)。low_fats 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品是低脂产品,'N' 表示不是低脂产品。recyclable 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品可回收,而 'N' 表示不可回收。编写解决方案找出既是低脂又是可回收的产品编号。返回结果 无顺序要求 。原创 2025-08-04 18:02:00 · 347 阅读 · 0 评论 -
【LeetCode | 数据库】查找每个员工花费的总时间
在 SQL 中,(emp_id, event_day, in_time) 是这个表的主键。该表显示了员工在办公室的出入情况。event_day 是此事件发生的日期,in_time 是员工进入办公室的时间,而 out_time 是他们离开办公室的时间。in_time 和 out_time 的取值在1到1440之间。题目保证同一天没有两个事件在时间上是相交的,并且保证 in_time 小于 out_time。计算每位员工每天在办公室花费的总时间(以分钟为单位)。原创 2025-08-04 16:55:39 · 275 阅读 · 0 评论 -
【LeetCode | 数据库】每位经理的下属员工数量
该表包含员工以及需要听取他们汇报的上级经理的 ID 的信息。 有些员工不需要向任何人汇报(reports_to 为空)。对于此问题,我们将至少有一个其他员工需要向他汇报的员工,视为一个经理。编写一个解决方案来返回需要听取汇报的所有经理的 ID、名称、直接向该经理汇报的员工人数,以及这些员工的平均年龄,其中该平均年龄需要四舍五入到最接近的整数。返回的结果集需要按照 employee_id 进行排序。原创 2025-08-04 16:53:54 · 214 阅读 · 0 评论 -
【LeetCode | 数据库】求关注者的数量
该表包含一个关注关系中关注者和用户的编号,其中关注者关注用户。编写解决方案,对于每一个用户,返回该用户的关注者数量。按 user_id 的顺序返回结果表。原创 2025-08-04 16:40:33 · 383 阅读 · 0 评论 -
【LeetCode | 数据库】每天的领导和合伙人
对于每一个 date_id 和 make_name,找出 不同 的 lead_id 以及 不同 的 partner_id 的数量。按 任意顺序 返回结果表。返回结果格式如下示例所示。原创 2025-08-04 16:25:11 · 278 阅读 · 0 评论 -
【LeetCode | 数据库】无效的推文
content 只包含字母数字字符,'!',' ',不包含其它特殊字符。这个表包含某社交媒体 App 中所有的推文。查询所有无效推文的编号(ID)。当推文内容中的字符数严格大于 15 时,该推文是无效的。以任意顺序返回结果表。原创 2025-08-04 16:24:04 · 251 阅读 · 0 评论 -
【LeetCode | 数据库】修复表中的名字
user_id 是该表的主键(具有唯一值的列)。该表包含用户的 ID 和名字。名字仅由小写和大写字符组成。编写解决方案,修复名字,使得只有第一个字符是大写的,其余都是小写的。返回按 user_id 排序的结果表。原创 2025-08-04 15:59:10 · 222 阅读 · 0 评论 -
【LeetCode | 数据库】每台机器的进程平均运行时间
现在有一个工厂网站由几台机器运行,每台机器上运行着 相同数量的进程 。编写解决方案,计算每台机器各自完成一个进程任务的平均耗时。完成一个进程任务的时间指进程的'end' 时间戳 减去 'start' 时间戳。平均耗时通过计算每台机器上所有进程任务的总耗费时间除以机器上的总进程数量获得。结果表必须包含machine_id(机器ID) 和对应的 average time(平均耗时) 别名 processing_time,且四舍五入保留3位小数。以 任意顺序 返回表。原创 2025-08-04 15:57:45 · 274 阅读 · 0 评论 -
【LeetCode | 数据库】各赛事的用户注册率
编写解决方案统计出各赛事的用户注册百分率,保留两位小数。返回的结果表按 percentage 的 降序 排序,若相同则按 contest_id 的 升序 排序。返回结果如下示例所示。原创 2025-08-04 15:46:05 · 235 阅读 · 0 评论
分享