【LeetCode高频SQL50题-基础版】打卡第5天:第26~30题

文章目录

  • 【LeetCode高频SQL50题-基础版】打卡第5天:第26~30题
    • ⛅前言
    • 超过5名学生的课
      • 🔒题目
      • 🔑题解
    • 求关注者的数量
      • 🔒题目
      • 🔑题解
    • 只出现一次的最大数字
      • 🔒题目
      • 🔑题解
    • 买下所有产品的客户
      • 🔒题目
      • 🔑题解
    • 每位经理的下属员工数量
      • 🔒题目
      • 🔑题解

【LeetCode高频SQL50题-基础版】打卡第5天:第26~30题

⛅前言

  在这个博客专栏中,我将为大家提供关于 LeetCode 高频 SQL 题目的基础版解析。LeetCode 是一个非常受欢迎的编程练习平台,其中的 SQL 题目涵盖了各种常见的数据库操作和查询任务。对于计算机科班出身的同学来说,SQL 是一个基础而又重要的技能。不仅在面试过程中经常会遇到 SQL 相关的考题,而且在日常的开发工作中,掌握 SQL 的能力也是必备的。

  本专栏的目的是帮助读者掌握 LeetCode 上的高频 SQL 题目,并提供对每个题目的解析和解决方案。我们将重点关注那些经常出现在面试中的题目,并提供一个基础版的解法,让读者更好地理解问题的本质和解题思路。无论你是准备找工作还是提升自己的技能,在这个专栏中,你可以学习到很多关于 SQL 的实践经验和技巧,从而更加深入地理解数据库的操作和优化。

  我希望通过这个专栏的分享,能够帮助读者在 SQL 的领域里取得更好的成绩和进步。如果你对这个话题感兴趣,那么就跟随我一起,开始我们的 LeetCode 高频 SQL 之旅吧!

  • 博客主页💖:知识汲取者的博客
  • LeetCode高频SQL100题专栏🚀:LeetCode高频SQL100题_知识汲取者的博客-CSDN博客
  • Gitee地址📁:知识汲取者 (aghp) - Gitee.com
  • 题目来源📢:高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台

超过5名学生的课

🔒题目

题目来源:596.超过5名学生的课

image-20231010085417801

🔑题解

  • 考察知识点group byhavingcount
select class
from Courses
group by class
having count(*) >= 5;

求关注者的数量

🔒题目

题目来源:1729.求关注者的数量

image-20231010085634651

🔑题解

  • 考察知识点countgroup byorder by
select user_id, count(*) followers_count
from Followers
group by user_id
order by user_id asc;

order by 默认排序就是 asc,所以这里的 acs 可以直接省略

只出现一次的最大数字

🔒题目

题目来源:619.只出现一次的最大数字

image-20231010093434229

🔑题解

  • 考察知识点maxgroup byhaving子查询

1)首先审题,我们明确我们需要从只出现一次的数字中,选出一个最大的,所以我们可以先查询出只出现一次的数字

select num, count(*) total
from MyNumbers
group by num
having total = 1;
| num | total |
| --- | ----- |
| 1   | 1     |
| 4   | 1     |
| 5   | 1     |
| 6   | 1     |

2)只要我们查询出了单个出现的数字,剩下的就很简单的,直接使用 max过滤出最大值即可

select max(num) num
from (select num, count(*) totalfrom MyNumbersgroup by numhaving total = 1
) single;

还有一种写法,不使用子查询,使用 排序+分页来实现

温馨提示:更加推荐第一种使用 max+子查询 的方式来获取最大的单个数字,因为 max+子查询 方式更加通用,可读性、性能更高

1)直接编写下面一个SQL即可,但是需要对结果进行处理

select num, count(num) total
from MyNumbers
group by num
having total = 1
order by num desc
limit 1;
| num | total |
| --- | ----- |
| 6   | 1     |

2)但是要使用 if 处理一下这个 total

select if(count(num)=1, num, 0) total
from MyNumbers
group by num
order by total desc;
| total |
| ----- |
| 6     |
| 5     |
| 4     |
| 1     |
| 0     |
| 0     |

3)此时我们把 total 换成 num 即可,再加一个 limit

select if(count(num)=1, num, 0) num
from MyNumbers
group by num
order by num desc
limit 1;
| num |
| --- |
| 0   |

嘿嘿,看到这个结果很让人惊讶,为什么 limit 得到的是0,而不是6???

问题原因:😫这个问题害我想了好久,结果发现是LeetCode的在线SQL编译器问题

image-20231010162739469

解决方法

select if(count(num)=1, num, null) num
from MyNumbers
group by num
order by num desc
limit 1;

买下所有产品的客户

🔒题目

题目来源:1045.买下所有产品的客户

image-20231010093528517

🔑题解

  • 考察知识点

1)审题,我想要计算出购买所有产品的用户,我的想法是先计算出产品的数量,然后判断一下用户的数量是否等于产品的总数,相等则说明这个用户购买了所有的产品

select customer_id
from Customer
group by customer_id
having count(customer_id) = (select count(*) from Product);

2)结果运行报错了,因为我没有认真审题,Customer表中可能存在重复的记录,因为一个用户可能多次购买同一个产品,对上面的代码作出更正,因为我们已经进行了分组,我们 只需要计算出分组后每一个用户的产品数量即可(注意需要去重)

select customer_id
from Customer
group by customer_id
having count(distinct product_key) = (select count(*) from Product);

每位经理的下属员工数量

🔒题目

题目来源:1731.每位经理的下属员工数量

image-20231010093622529

🔑题解

  • 考察知识点自连接avgcountround

1)首先审题,我们可以通过自连接将相关联的两条记录变为一条,这样就好进行后面的逻辑处理了

select *
from Employees e1 join Employees e2 on e1.employee_id = e2.reports_to;
| employee_id | name  | reports_to | age | employee_id | name  | reports_to | age |
| ----------- | ----- | ---------- | --- | ----------- | ----- | ---------- | --- |
| 9           | Hercy | null       | 43  | 6           | Alice | 9          | 41  |
| 9           | Hercy | null       | 43  | 4           | Bob   | 9          | 36  |

2)然后对上表进行操作,即可得到正确的结果了

select e1.employee_id, e1.name, count(e2.reports_to) reports_count, round(avg(e2.age), 0) average_age
from Employees e1 join Employees e2 on e1.employee_id = e2.reports_to
group by e1.employee_id
order by e1.employee_id;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《进化优化》第4章 遗传算法的数学模型

文章目录 4.1 图式理论4.2 马尔可夫链4.3 进化算法的马尔可夫模型的符号4.4 遗传算法的马尔可夫模型4.4.1 选择4.4.2 变异4.4.3 交叉 4.5 遗传算法的动态系统模型4.5.1 选择4.5.2 变异4.5.3 交叉 4.1 图式理论 图式是描述一组个体的位模式,其中用*来表示不在乎的位…

如何在Ubuntu 20.04.6 LTS系统上运行Playwright自动化测试

写在前面 这里以 Ubuntu 20.04.6 LTS为例。示例代码:自动化测试代码。 如果过程中遇到其他非文本中提到的错误,可以使用搜索引擎搜索错误,找出解决方案,再逐步往下进行。 一、 环境准备 1.1 安装python3 1.1.1 使用APT安装Py…

python+opencv+深度学习实现二维码识别 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 pythonopencv深度学习实现二维码识别 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 该项目较为新颖&…

跨语言深入探讨如何实现方法增强:Java Go的多策略实现

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

虚拟现实VR技术在医疗行业的应用介绍

虚拟现实 (VR) 虽然经常与游戏联系在一起,但不可否认,未来科技少不了虚拟现实,其应用可以彻底改变许多行业。在医疗领域,无数人正在探索 VR 可以帮助患者和医疗从业者实现更好的治疗结果治疗方式,比如在手术、疼痛管理…

最新水果FL Studio21.2中文汉化版本覆盖升级

FLStudio中文21最新版本以其使用速度而闻名,是一个高度复杂的音乐制作环境。FL Studio免费,联合国音序器音频和MIDI每个复合编辑都是音乐。现代的DAW是一种非凡的野兽。首先,它在很大程度上把自己放在了(几乎)每个人记录过程的核心。其次&…

【计算机网络】——前言计算机网络发展的历程概述

主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:初阶数据结构专栏 Linux被操作记:Linux专栏 LeetCode刷题掉发记:LeetCode刷题 算法:算法专栏 C头…

【2023全网最全教程】web自动化测试入门

一、自动化测试基本介绍 1 自动化测试概述: 什么是自动化测试?一般说来所有能替代人工测试的方式都属于自动化测试,即通过工具和脚本来模拟人执行用例的过程。 2 自动化测试的作用 减少软件测试时间与成本改进软件质量通过扩大测试覆盖率…

hive 之select 中文乱码

此处的中文乱码和mysql的库表 编码 latin utf 无关。 直接上案例。 有时候我们需要自定义一列,有时是汉字有时是字母,结果遇到这种情况了。 说实话看到这真是糟心。这谁受得了。 单独select 没有任何问题。 这是怎么回事呢? 经过一番检查&…

【C++】-c++11的知识点(中)--lambda表达式,可变模板参数以及包装类(bind绑定)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

十六、【橡皮擦工具组】

文章目录 橡皮擦背景橡皮擦1. 一次取样2. 连续取样3. 取样背景色板 魔术橡皮擦 橡皮擦 橡皮擦跟我们平常生活中所用的橡皮擦是一样,它是将图层的内容擦除,只剩下空白部分。另外当我们按住Alt的键去擦除空白部分的时候,也可以将背景的部分显示出来。 另…

深入解析Spring Cloud Gateway的GlobalFilter

文章目录 摘要引言GlobalFilter的作用使用GlobalFilter默认的GlobalFilter自定义GlobalFilter 示例代码配置GlobalFilter配置文件方式代码方式 高级用法:重写GlobalFilter思路代码实现 结论参考文献 摘要 本文将详细介绍Spring Cloud Gateway中的GlobalFilter&…

VR会议:远程带看功能,专为沉浸式云洽谈而生

随着科技的不断发展,VR技术已经成为当今市场上较为热门的新型技术之一了,而VR会议远程带看功能,更是为用户提供更加真实、自然的沉浸式体验。 随着5G技术的发展,传统的图文、视频这种展示形式已经无法满足消费者对信息真实性的需求…

Vue2 +Element UI 表格行合并

如果相邻数据是一致的&#xff0c;则单元格的行合并,指定需要合并的列&#xff0c;下面我是指定合并了分类和类型这两列。 先看效果 Element UI为我们的<el-table>提供了一个属性span-method&#xff1a;合并行或列的计算方法 下面是一个示例: html部分 - 主要是在表上指…

广州华锐互动:炼钢工厂VR仿真实训系统

随着科技的发展&#xff0c;我们的教育体系和职业培训方法也在迅速变化。其中&#xff0c;虚拟现实&#xff08;VR&#xff09;技术的出现为我们提供了一种全新的学习和培训方式。特别是在需要高度专业技能和安全性的领域&#xff0c;如钢铁冶炼。本文将探讨如何使用VR进行钢铁…

MySQL使用函数、存储过程实现:向数据表快速插入大量测试数据

实现数据表快速插入20W测试数据 实现过程创建表开启允许创建函数生成随机字符串生成随机整数生成随机地址创建存储过程调用存储过程查看插入数据 其他实用函数生成随机浮点数生成随机日期时间生成随机布尔值生成随机姓名生成随机手机号码生成随机邮箱地址生成随机IP地址生成随机…

SQL Server 创建表

切换数据库&#xff0c;判断是否存在 --切换数据库 use DBTEST--判断表是否存在 --创建的所有表都可以在sys.boject中找到&#xff0c;所以这里在sys.objects中查找是否有名字为department的表并且type为U 即用户生成的表 if exists(select * from sys.objects where namedepa…

GraphQL 查询:一个全面指南

GraphQL GraphQL 是一种 API 查询语言和运行时&#xff0c;用于使用现有数据完成这些查询。它为您的 API 中的数据提供了完整且易于理解的描述&#xff0c;让客户能够准确地询问他们需要什么&#xff0c;更容易随着时间的推移发展 API&#xff0c;并启用强大的开发人员工具。 …

TypeScript React(上)

目录 扩展学习资料 TypeScript设计原则 TypeScript基础 语法基础 变量声明 JavaScript声明变量 TypeScript声明变量 示例 接口 (标准类型-Interface) 类型别名-Type 接口 VS 类型别名 类型断言:欺骗TS&#xff0c;肯定数据符合结构 泛型、<大写字母> 扩展学习…

IDEA 配置 云服务器远程部署

目录 参考资料远程部署与远程开发远程连接配置配置成功&#xff1a;同步文件自动更新文件配置自动更新文件参数调整正确运行问题1&#xff1a;运行mvn spring-boot:run之后一直卡在第一条下载问题2&#xff1a;运行成功后访问不到问题3&#xff1a;无法配置远程开发 参考资料 …