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

news2024/11/15 11:09:46

文章目录

  • 【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(*) total
    from MyNumbers
    group by num
    having 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.coloradmin.cn/o/1079245.html

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

相关文章

vue踩的坑:属性报undefined错误问题汇总

问题 在一个组件里&#xff0c;通过props传值进去对象&#xff0c;在控制台打印报错误信息&#xff0c;提示某属性不存在。 例如&#xff1a; <div>{{data.param.aaa}}</div> 类似这种的&#xff0c;取对象子级下面的值&#xff0c;就报了undefined。 原因应该…

机器学习(21)---召回率(recall)、精度(precision)和准确率(accuracy)

文章目录 1. 分布不平衡的数据集2. TP、TN 、FP 、FN3. 混淆矩阵4. 各自的计算公式5. 例题应用 1. 分布不平衡的数据集 1. 精度&#xff08;precision&#xff09;和召回率&#xff08;recall&#xff09;是衡量机器学习模型性能的重要指标&#xff0c;特别是数据集分布不平衡的…

Ubuntu 20.04LTS环境下替换Vivado 2019.2代码编辑器

Ubuntu使用 打开 tools-settings-Text Editor 参考 打开 tools-settings-Text Editor 选中Custom Editor&#xff0c;然后点击右边的三个点&#xff0c;弹出这个界面 然后切换到linux 终端&#xff0c;安装xterm 然后在下面编辑框里输入&#xff1a; xterm -geometry 100x60 …

苹果电脑用什么清理软件比较好?

很多人都会有这样的误解&#xff1a;mac系统不用清理。实际上mac只是将系统垃圾隐藏了&#xff0c;并且需要通过特定的方式打开。但其实在我们日常工作不用这么麻烦&#xff0c;我们只需用苹果电脑专业的清理软件就好了。今天小编就给大家分享一下mac用什么清理软件好 一、mac用…

nvm: node版本管理工具

有时候需要新旧项目一起开发&#xff0c;但是旧的项目用的node版本比较低&#xff0c;也不好升级&#xff0c;所以我们可以使用nvm 来进行node版本管理 1. 准备工作 先删除掉原来的nodejs 下载nvm: 官网地址&#xff1a;Releases coreybutler/nvm-windows GitHub 百度网盘…

Apollo版本变迁里程碑:从诞生到巅峰的无人驾驶之路

特点与改进 概述里程碑版本变迁6.0特点及改进7.0特点及改进8.0特点及改进代码差异 福利活动 主页传送门&#xff1a;&#x1f4c0; 传送 概述 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xf…

为啥 Erlang 没有像 Go、Scala 语言那样崛起?

为啥 Erlang 没有像 Go、Scala 语言那样崛起&#xff1f; - 知乎 问&#xff1a; 成熟的杀手级产品&#xff0c;技术栈完整&#xff0c;社区活跃&#xff0c;易上手使用的人比较多。 scala 目前业界应用广泛&#xff0c;技术栈完整&#xff0c;社区活跃&#xff0c;还有 spar…

Bun v1.0.3 发布,Zig 编写的 JavaScript 运行时

导读Bun 发布了其最新版本 v1.0.3&#xff0c;这是一个集 JavaScript 运行时、打包器、转译器和包管理器于一体的工具。这次的更新不仅修复了众多已知的问题&#xff0c;还引入了一系列令人期待的新功能。 首先&#xff0c;Bun 在这个版本中增加了对 TypeScript 的 emitDecora…

C++ 重载运算符在HotSpot VM中的应用

C支持运算符重载&#xff0c;对于Java开发者来说&#xff0c;这个可能比较陌生一些&#xff0c;因为Java不支持运算符重载。运算符重载本质上来说就是函数重载。下面介绍一下HotSpot VM中的运算符重载。 1、内存分配与释放 在C中可以通过new运算符创建一个C的类实例&#xff…

整车热管理「升温」,哪些厂商排名电子风扇市场份额TOP10

作为整车热管理系统的关键组成部分&#xff0c;风扇在传统燃油车时代主要是帮助发动机、空调系统进行散热冷却&#xff1b;同时&#xff0c;产品也经历了从硅油风扇到电子风扇&#xff08;从有刷电机到无刷电机的演进&#xff09;的升级。 而在新能源汽车的架构中&#xff0c;…

安防监控视频汇聚平台EasyCVR视频广场搜索异常,报错“通道未开启”的问题排查与解决

安防视频监控系统EasyCVR视频汇聚平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、…

arcgis添加天地图山东wtms服务

arcgis添加天地图wtms服务 首先打开天地图山东网站&#xff0c;进入首页![天地图山东首页](https://img-blog.csdnimg.cn/89df69e1c3d645b4a9e9652a08580342.png)然后点击开发资源进入开发页面点击成为开发者&#xff0c;进入申请秘钥页面&#xff0c;申请秘钥&#xff1b;![在…

Axure常用技巧及问题

以下内容将持续更新 目录 一、技巧1、版本选择2、快捷键3、定制工具栏 二、问题1、无法在浏览器预览2、发布到本地的HTML无法查看 一、技巧 1、版本选择 2、快捷键 3、定制工具栏 上方菜单栏-右键-自定义工具栏 二、问题 1、无法在浏览器预览 需要更改Axure配置 点击发布-…

win11无法打开chm格式的文件

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

NPM 常用命令(十一)

目录 1、npm shrinkwrap 1.1 使用语法 1.2 描述 2、npm star 2.1 使用语法 2.1 描述 3、npm stars 3.1 使用语法 3.2 描述 4、npm start 4.1 使用语法 4.2 描述 5、npm stop 5.1 使用语法 5.2 描述 6、npm team 6.1 使用语法 6.2 描述 6.3 详情 7、npm test…

MES系统电子秤数据采集

一、MES系统电子秤数据采集的意义&#xff1a; 电子秤数据采集是指利用电子秤设备对生产过程中的物料重量进行实时监测和记录。MES系统电子秤数据采集的意义在于提供一个集中管理和监控生产过程中物料重量的工具&#xff0c;使企业能够实现以下目标&#xff1a; 1. 质量控制&…

(部署服务器系列一)虚拟机模拟部署服务器

1、下载安装vmware 15 &#xff08;win7最高支持版&#xff09; 2、下载安装CentOS 配置2核2g&#xff08;最少&#xff09;磁盘100g&#xff08;不会实际占有&#xff09;选择时区-上海配置分区&#xff1a;https://blog.csdn.net/qq_35363507/article/details/127390889 &a…

GPU 虚拟化技术MIG简介和安装使用教程

使用多实例GPU (MIG/Multi-Instance GPU)可以将强大的显卡分成更小的部分&#xff0c;每个部分都有自己的工作&#xff0c;这样单张显卡可以同时运行不同的任务。本文将对其进行简单介绍并且提供安装和使用的示例。 什么是MIG NVIDIA Multi-Instance GPU (MIG) 技术是 NVIDIA…

Java 获取服务器资源(内存、负载、磁盘容量)

1.说明 我们经常通过SSH终端发送shell命令进行服务器运维&#xff0c;从而获取到服务器的各种资源&#xff0c;按照这个思路&#xff0c;我们可以利用Java做一个定时任务&#xff0c;定时采集服务器资源使用情况&#xff0c;从而实现服务器资源的动态呈现。 2.封装SSH操作方法…

淘宝商品详情API接口(item_get-获得taobao商品详情接口),淘宝API接口

淘宝商品详情API接口&#xff08;item_get-获得taobao商品详情接口&#xff09;&#xff0c;淘宝API接口可获取到商品链接&#xff0c;商品ID&#xff0c;商品标题&#xff0c;商品价格&#xff0c;品牌名称&#xff0c;店铺昵称&#xff0c;sku规格&#xff0c;sku属性&#x…