【LeetCode高频SQL50题-基础版】打卡第2天:第11-15题

文章目录

  • 【LeetCode高频SQL50题-基础版】打卡第2天:第11-15题
    • ⛅前言
  • 员工奖金
    • 🔒题目
    • 🔑题解
  • 学生们参加各科测试的次数
    • 🔒题目
    • 🔑题解
  • 至少有5名直接下属的经理
    • 🔒题目
    • 🔑题解
  • 确认率
    • 🔒题目
    • 🔑题解
  • 有趣的电影
    • 🔒题目
    • 🔑题解

【LeetCode高频SQL50题-基础版】打卡第2天:第11-15题

⛅前言

  在这个博客专栏中,我将为大家提供关于 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)全球极客挚爱的技术成长平台

员工奖金

🔒题目

题目来源:577.员工奖金

image-20230804145855950

🔑题解

左连接+判空

select e.name, b.bonus
from employee e left join bonus b on e.empId = b.empId
where b.bonus < 1000 or b.bonus is null;

备注:本题新手可能会容易会略 null 值,MySQL中 null 值不参与比较运算,因为 null 是一个不确定的值,MySQL无法确定他是数字还是字符串还是日期,所以不参与比较

学生们参加各科测试的次数

🔒题目

题目来源:1280.学生们参加各科测试的次数

image-20230804150747206

🔑题解

通过使用INNER JOIN将学生表和科目表连接起来,然后使用LEFT JOIN将考试表与前面的结果进行关联,即可计算出每个学生在每一门科目上的测试次数。最后,使用GROUP BY对 学生ID 和 科目名称 进行分组,并按照 学生ID 和 科目名称 进行排序。

SELECT stu.student_id, stu.student_name, sub.subject_name, COUNT(exa.subject_name) AS attended_exams
FROM students stu JOIN subjects sub
LEFT JOIN examinations exa ON exa.student_id = stu.student_id AND exa.subject_name = sub.subject_name
GROUP BY stu.student_id, sub.subject_name
ORDER BY stu.student_id, sub.subject_name;

通过使用 join 将 stu 和 sub 两张表进行内连接,由于 stu 和 sub 没有公共字段,就直接取笛卡尔积,然后将这个得到的笛卡尔积与 exa 表进行左外连接查询,通过 on 条件进行筛选 最终可以得到所有的组合,最后还需要通过 group by 对 student_id 和 subject_name进行一个分组操作,最终再进行一个排序,就得到最终答案了

PS:三表联查,这个SQL写起来还是有定东西的,可能是平常SQL写少了,大部分都是直接使用MyBatisPlus的API进行单表操作

至少有5名直接下属的经理

🔒题目

题目来源:570.至少有5名直接下属的经理

image-20230804154519693

🔑题解

  • join+子查询

    首先,我们需要查询出至少有5名下属的员工,这里需要使用 group by 对表中所有的managerId进行一个分组,同时利用 havingcount函数对分组的managerId进行一个统计,这里选择使用having是因为having是分组后的操作,如果直接使用count是不行的,这里必须是分组之后的调用count函数

    select managerId
    from employee
    group by managerId
    having count(managerId >= 5);
    

    然后再利用 join 取交集,这里选择使用 join 不使用 left join是由于结果没有值不能使用 null

    select name
    from employee e1 join(select managerId from employeegroup by managerIdhaving count(managerId) >= 5) e2
    on e1.id = e2.managerId;
    

    如果使用 left join,首先要交换一下顺序,但是有一个示例数据不能通过,因为 没有匹配值的时候不能取 null,这也是 left join和 join 的区别,一个没有匹配值时直接使用null填充,一个直接不填充

    select name
    from (select managerId from employeegroup by managerIdhaving count(managerId) >= 5) e2 left join employee e1  
    on e1.id = e2.managerId;
    
  • in+子查询

    select name
    from employee
    where id in (select managerId from employeegroup by managerIdhaving count(managerId) >= 5);
    

确认率

🔒题目

题目来源:1934.确认率

image-20230804160351893

🔑题解

主要考察对ROUNDIFNULLAVG这三个知识点的使用

ROUNT(number,n):将number保留n位小数

IFNULL(exp, n):如果 exp 为 null,就取值为 n

AVG(col):计算某个字段的平均值

SELECTs.user_id,ROUND(IFNULL(AVG(c.action='confirmed'), 0), 2) AS confirmation_rate
FROMSignups AS s
LEFT JOINConfirmations AS c
ONs.user_id = c.user_id
GROUP BYs.user_id;

有趣的电影

🔒题目

题目来源:620.有趣的电影

image-20230804161644358

🔑题解

这个考察的知识点是mod,相较于上一题感觉难度降低了好多好多

select id,movie,description,rating
from cinema
where description != 'boring' and mod(id, 2) = 1 
order by rating desc;

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

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

相关文章

使用python利用merge+sort函数对excel进行连接并排序

好久没更新了&#xff0c;天天玩短视频了。现在发现找点学习资料真的好难。 10.1期间偶然拿到一本书 本书是2022年出版的&#xff0c;看了一下不错&#xff0c;根据上面的案例结合&#xff0c;公司经营整合案例&#xff0c;分享一下。 数据内容来源于书中内容&#xff0c;仅供…

docker部署Vaultwarden密码共享管理系统

Vaultwarden是一个开源的密码管理器&#xff0c;它是Bitwarden密码管理器的自托管版本。它提供了类似于Bitwarden的功能&#xff0c;允许用户安全地存储和管理密码、敏感数据和身份信息。 Vaultwarden的主要特点包括&#xff1a; 1. 安全的数据存储&#xff1a;Vaultwarden使…

手机投屏电脑软件AirServer5.6.3.0最新免费版本下载

随着智能手机的普及&#xff0c;越来越多的人喜欢用手机观看视频、玩游戏、办公等。但是&#xff0c;有时候手机屏幕太小&#xff0c;不够清晰&#xff0c;也不方便操作。这时候&#xff0c;如果能把手机屏幕投射到电脑上&#xff0c;就可以享受更大的视野&#xff0c;更流畅的…

【javaweb】学习日记Day11 - tlias智能管理系统 - 文件上传 新增 修改员工 配置文件

目录 一、员工管理功能开发 1、新增员工 postman报错500的原因 &#xff08;1&#xff09;Controller类 &#xff08;2&#xff09;Service类 &#xff08;3&#xff09;Mapper类 2、根据ID查询 &#xff08;1&#xff09;Controller类 &#xff08;2&#xff09;Serv…

基于小波神经网络的网络流量预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022A 3.部分核心程序 ........................................................... %% 总流量数据 input(:,1)dat…

如何保证 RabbitMQ 的消息可靠性?

项目开发中经常会使用消息队列来完成异步处理、应用解耦、流量控制等功能。虽然消息队列的出现解决了一些场景下的问题&#xff0c;但是同时也引出了一些问题&#xff0c;其中使用消息队列时如何保证消息的可靠性就是一个常见的问题。如果在项目中遇到需要保证消息一定被消费的…

(高阶) Redis 7 第18讲 RedLock 分布式锁

🌹 以下分享 RedLock 分布式锁,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 问题 分布式锁问题从(高阶) Redis 7 第17讲 分布式锁 实战篇_PJ码匠人的博客-CSDN博客 这篇文章来看,…

redis学习(二)——redis常见命令及基础数据类型

数据类型 基础数据类型 字符串 String abcMap集合 Hsah {name:“zhangsan”,age:18}列表 List [a, b, c, d]Set集合 Set {a,b,c}有序Set集合 SortSet {a:1,b:2,c:3} 特殊数据类型 GEO 地理坐标 {A:(100.2,35.1)}BitMap 位图&#xff0c;只存储0和1 01101011101HyperLog 基数…

地图资源下载工具数据在线、离线查询及数据激活功能

哨兵相关产品&#xff0c;工具提供了表示系统是否为归档离线的信息&#xff01;您可以利用下载[定时重试]功能激活并下载哨兵相关离线产品数据&#xff01;

Java中栈实现怎么选?Stack、Deque、ArrayDeque、LinkedList(含常用Api积累)

目录 Java中的Stack类 不用Stack有以下两点原因 1、从性能上来说应该使用Deque代替Stack。 2、Stack从Vector继承是个历史遗留问题&#xff0c;JDK官方已建议优先使用Deque的实现类来代替Stack。 该用ArrayDeque还是LinkedList&#xff1f; ArrayDeque与LinkList区别&#xff1…

Java-多线程

摘要 多线程编程是现代软件开发中的一个重要概念&#xff0c;它允许程序同时执行多个任务&#xff0c;提高了程序的性能和响应性。本博客深入探讨了多线程编程的关键概念、原理和最佳实践。 线程、进程、多线程、并发、并行 进程 进程是计算机中运行的程序的实例。每次打开一…

《人间失格》阅读笔记

《人间失格》读书笔记 2023年10月7日读完&#xff0c;在过去的三个月时间内&#xff0c;有忙碌申博、从杭州辞职回家、准备入学、到澳门入学的事情&#xff0c;终于忙完了这些所有事情&#xff0c;回到了横琴的小房子里读完了这本书。 这本书前半部分讲了主角&#xff0c;作为…

Delphi编程:pagecontrol组件的tab字体变大

1、将pagecontrol组件属性中的font的字体变成四号。 2、将tabsheet1属性中的font的字体设置成八号。 结果如下&#xff1a;

水果种植与果园监管“智慧化”,AI技术打造智慧果园视频综合解决方案

一、方案背景 我国是水果生产大国&#xff0c;果园种植面积大、产量高。由于果园的位置大都相对偏远、面积较大&#xff0c;值守的工作人员无法顾及到园区每个角落&#xff0c;因此人为偷盗、野生生物偷吃等事件时有发生&#xff0c;并且受极端天气如狂风、雷暴、骤雨等影响&a…

山东省赛二阶段第一部分解题思路

提交攻击者的IP地址 192.168.1.7 这个直接awk过滤一下ip次数&#xff0c;这个ip多得离谱&#xff0c;在日志里面也发现了它的恶意行为&#xff0c;后门&#xff0c;反弹shell 识别攻击者使用的操作系统 Linux 找出攻击者资产收集所使用的平台 shodan 提交攻击者目…

C#,数值计算——数据建模Fitab的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Fitting Data to a Straight Line /// </summary> public class Fitab { private int ndata { get; set; } private double a { get; set; } …

CTF之信息收集

什么是信息收集 信息收集是指通过各种方式获取所需要的信息&#xff0c;以便我们在后续的渗透过程更好的进行。最简单的比如说目标站点的IP、中间件、脚本语言、端口、邮箱等等。我觉得信息收集在我们参透测试的过程当中&#xff0c;是最重要的一环&#xff0c;这一环节没做好…

Java-Exception

目录 异常概念ErrorException 体系图常见运行时异常NullPointerExceptionArithmeticExceptionArrayIndexOutOfBoundExceptionClassCastExceptionNumberFormatException 常见的编译异常异常处理机制自定义异常throw和throws对比 异常是Java编程中的常见问题&#xff0c;了解如何…

nsoftware Cloud SMS 2022 .NET 22.0.8 Crack

nsoftware Cloud SMS 能够通过各种流行的消息服务&#xff08;包括 Twilio、Sinch、SMSGlobal、SMS.to、Vonage、Clickatell 等&#xff09;发送、接收和安排 SMS 消息&#xff0c;从而提供了一种简化且高效的消息服务方法。 Cloud SMS 提供单个 SMS 组件&#xff0c;允许通过…

JDBC-day02(使用PreparedStatement实现CRUD操作)

所需的数据库数据要导入到自己的数据库库中 三&#xff1a;使用PreparedStatement实现CRUD操作 数据库连接被用于向数据库服务器发送命令和 SQL 语句&#xff0c;并接受数据库服务器返回的结果。其实一个数据库连接就是一个Socket连接。CRUD操作&#xff1a;根据返回值的有无…