2024-01-01 力扣高频SQL50题目 练习笔记

1. 1661求机器平均运行时间

在做这道题的时候,我遇到了4个问题

# 求平均的问题 如何找到个数? -> 相减对应列值后,直接average 就行。因为avg就是自动确定要除的个数(当然要联合正确的group by 分组)

# 怎么根据machine_id和process_id 去匹配 -> 自联结

# start 和 end 如何确定 -> 自联结指定

# group by 分组 如果没有加分组,可能就不对。什么时候要加分组呢?聚合函数avg,sum,count的时候,都“应该”加。还有就是需要根据xx分组。筛选出每个唯一的值,并根据这些唯一的值进行查询

2 577员工奖金

这是一个很简单的连表查询,要求找出奖金小于1000元的员工姓名和金额。

于是,我最开始这样写:
 

select e.name,b.bonus from Employee e left join Bonus b on e.empId = b.empId

where b.bonus <1000

但显示不对。我发现答案里面有null,说明在Bonus中的bonus有可能是null,也就是没有这条数据。那么就需要加上判断是否是null。

select e.name,b.bonus from Employee e left join Bonus b on e.empId = b.empId

where b.bonus is null or  b.bonus <1000

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

这个题目我写了好几遍。

第一次尝试,没有写出来,看了提解启发思路,再写,不对

 select a.student_id  student_id,a.student_name ,b.subject_name ,count(b.subject_name)attended_exams

 from Students a right join Examinations c on a.student_id = c.student_id

 left join Subjects b on b.subject_name =  c.subject_name group by a.student_id,a.student_name

 ,b.subject_name order by a.student_id,b.subject_name

第二次尝试,不对

 select a.student_id ,a.student_name ,b.subject_name ,count(b.subject_name)attended_exams

 from Students a  join Subjects b left join Examinations c on a.student_id = c.student_id

 and b.subject_name =  c.subject_name group by a.student_id,a.student_name

 order by a.student_id,b.subject_name

第三次尝试,不对

 select a.student_id ,a.student_name ,b.subject_name ,count(b.subject_name)attended_exams

 from Students a  join Subjects b left join Examinations c on a.student_id = c.student_id

 and b.subject_name =  c.subject_name group by a.student_id, c.subject_name

 order by a.student_id,b.subject_name

最后一次,比对提解,逐帧查看问题出在哪里

select a.student_id ,a.student_name ,b.subject_name ,count(c.subject_name)attended_exams

from Students a  join Subjects b left join Examinations c on a.student_id = c.student_id

and b.subject_name =  c.subject_name group by a.student_id, a.student_name,b.subject_name

order by a.student_id,b.subject_name

# 问题1 考试次数 0 的没有罗列出来 -> 我换个表连接方向,但好像还是不行唉。后来发现是分组和count()列的问题。

# 问题2 分组条件 我选学生名 学生id 这不对的。

# 问题3 分组条件 我选择 考试表的subject_name,也是不对的。

正确做法:应该根据科目表的subject_name分组,不然就没有考试表次数为0的记录。

# 问题4 count的时候,要去count考试表里的subject_name。

看来,分组条件不是随便选的,要起到唯一性,如果分组条件不唯一,可能会导致查询结果的重复或错误。而count的列名也不是随便选的!

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

最开始,我这样写

select t.name from (select e1.name as name,count(e2.managerId) from Employee e1,Employee e2 where e1.id = e2.managerId

group by e1.name having count(e2.managerId) >4 ) t

我点击运行,看通过了测试用例,就开心大吉了。

但是当我点击提交的时候,提示我解答错误,没有通过全部的测试用例。

这里我没有仔细看,我以为是没有去重,于是我这样写

select distinct t.name from (select e1.name as name,count(e2.managerId) from Employee e1,Employee e2 where e1.id = e2.managerId

group by e1.name

having count(e2.managerId) >4 ) t

发现还是不对,点开源码,我才明白,我上面写的SQL无法解决重名的问题!

因此,需要去掉distinct,以及在分组的时候不要根据姓名name分组,而是要根据主键id去分组。

select t.name from (select e1.name as name,count(e2.managerId) from Employee e1,Employee e2 where e1.id = e2.managerId

group by e1.id

having count(e2.managerId) >4 ) t

5.1934 确认率

在写这道题的时候,我想到了以下问题:

# 联表时候 怎么 自联结?因为我想,需要找出“确认”的个数。->后面发现直接用if(条件,1,0),这样就可以实现这个效果。而总个数直接count(c.action)就可以。

# 怎么确认 timeout 和 confirmed 的个数?count什么呢?-> 同上。

# sum 怎么统计 action里 为 某个值的 个数 sum(),注意要group by 要准确的条件。

 select s.user_id,ifnull((sum(if(c.action = 'confirmed',1,0)) / count(c.action)),0) as confirmation_rate from Signups s left join Confirmations c on s.user_id  = c.user_id group by c.user_id

最后的ifnull 是因为这里提示要为0.

但是这样写有个问题,# 如果c.action 没有记录怎么办 ->用avg

 select s.user_id,round(ifnull(avg(c.action = 'confirmed'),0),2) as confirmation_rate from Signups s left join Confirmations c on s.user_id  = c.user_id group by c.user_id

这里为啥avg(c.action = 'confirmed')就能计算出平均成功率是多少呢?我没太理解

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

主流大语言模型集体曝出训练数据泄露漏洞

内容概要&#xff1a; 安全研究人员发现&#xff0c;黑客可利用新的数据提取攻击方法从当今主流的大语言模型&#xff08;包括开源和封闭&#xff0c;对齐和未对齐模型&#xff09;中大规模提取训练数据。当前绝大多数大语言模型的记忆&#xff08;训练数据&#xff09;可被恢…

004、变量与可变性

1. 变量与可变性 在Rust中&#xff0c;变量默认是不可变的&#xff0c;这一设计是为了让你安全方便地写出复杂、甚至是并行的代码。 当然&#xff0c;Rust也提供了可使用的可变变量的方法&#xff0c;这个待会讨论。 当一个变量是不可变时&#xff0c;一旦它被绑定到某个值上面…

【Python动漫系列】HelloKitty(完整代码)

文章目录 HelloKitty环境需求完整代码HelloKitty Hello Kitty是一个非常受欢迎的卡通人物,以其可爱的形象和广泛的产品系列而闻名于世。Hello Kitty的形象是一个没有嘴巴的小白猫,穿着蓝色连衣裙和红色蝴蝶结。她有一对大大的眼睛和一个小小的鼻子,看起来非常可爱。 Hello…

Linux基础知识点(五-信号)

一、信号的基本概念 1.1 信号的概念 信号&#xff08;signal&#xff09;&#xff0c;又称为软中断信号&#xff0c;用于通知进程发生了异步事件&#xff0c;它是Linux系统响应某些条件而产生的一个事件&#xff0c;它是在软件层次上对中断机制的一种模拟&#xff0c;是一种异…

创新美食体验:从零开始的同城上门做饭APP开发指南

同城上门做饭APP为用户提供了一种全新的用餐方式。本文将带领读者从零开始&#xff0c;探索同城上门做饭APP的开发过程&#xff0c;深入了解技术细节和创新要点。 1.了解用户需求 在着手开发同城上门做饭APP之前&#xff0c;首要任务是深入了解目标用户的需求。调查用户对于美…

直接形式1(三阶)补偿器

直接形式1(三阶)补偿器 直接形式1&#xff08;DF1&#xff09;结构是一种常见类型的离散时间控制结构&#xff0c;用于实现被指定为极点零点集或z&#xff08;传递函数&#xff09;中的有理多项式的控制律。 请注意&#xff0c;系数已被调整以标准化分母中 z 的最高幂。 一般…

【漏洞复现】冰峰VPN存在敏感信息泄露漏洞

漏洞描述 冰峰VPN log/system.log模块日志信息泄露漏洞 免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利…

TinyEngine 服务端正式开源啦!!!

背景介绍 TinyEngine 低代码引擎介绍 随着企业对于低代码开发平台的需求日益增长&#xff0c;急需一个通用的解决方案来满足各种低代码平台的开发需求。正是在这种情况下&#xff0c;低代码引擎应运而生。它是一种通用的开发框架&#xff0c;通过对低代码平台系统常用的功能进…

yolov5简单手势识别

实验目的 实验要求只需要识别五个简单的手势即可&#xff0c;分别对应的一下五个动作 动作对应标签名点赞goodOKok单手比心love数字 5five数字8eight 使用yolov5实现目标检测功能&#xff0c;有一下几个主要步骤 环境配置&#xff08;包括conda、labelimg、yolov5的下载&am…

2023海内外零知识证明学习资料汇总(二)(深入理解零知识证明篇)

工欲善其事,必先利其器 Web3开发中&#xff0c;各种工具、教程、社区、语言框架.。。。 种类繁多&#xff0c;是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役&#xff1f; 参见另一篇博文&#x1f449; 2024最全面且有知识深度的web3开发工具、web3学习项目…

PACC:数据中心网络的主动 CNP 生成方案

PACC&#xff1a;数据中心网络的主动 CNP 生成方案 文章目录 PACC&#xff1a;数据中心网络的主动 CNP 生成方案PACC算法CNP数据结构PACC参数仿真结果参考文献 PACC算法 CNP数据结构 PACC参数 仿真结果 PACC Hadoop Load0.2 的情况&#xff1a; PACC Hadoop Load0.4 的情况&a…

旅游平台网页前后端

功能清单 游客功能 用户注册、登录登录权限拦截按名称搜索房间支付流程查看订单信息和状态评论预定过的房间&#xff0c;并自动修改订单状态查看统计剩余房间数量&#xff0c;数量为0时不可预定 管理员功能 房间分类管理 类型的删除、修改、查询&#xff08;准备添加增添功能…

vivo 数据库备份恢复系统演化

作者&#xff1a;vivo 互联网数据库团队 - Han Chaobing 介绍 vivo 数据库备份恢复功能的演化&#xff0c;以及对备份文件的功能扩展。 一、概述 vivo互联网领域拥有的数据库组件分别为 MySQL、MongoDB、TiDB 等&#xff0c;其中MySQL集群占比绝大部分&#xff0c; MongoDB …

轻松提升软件性能:快速学习和使用Memcached

目录 1、前言 2、Memcached的简介 3、Memcached的安装与配置 4、Memcached的数据结构 5、Memcached的常用命令 6、Memcached的高级特性 7、Memcached在系统中如何使用 8、结语 1、前言 Memcached是一个广泛用于提升软件性能的开源内存缓存系统。它可以有效地减少对数据…

iOS问题记录 - iOS 17通过NSUserDefaults设置UserAgent无效(续)

文章目录 前言开发环境问题描述问题分析1. 准备源码2. 定位源码3. 对比源码4. 分析总结 解决方案补充内容1. UserAgent的组成2. UserAgent的设置优先级 最后 前言 在上篇文章中对该问题做了一些判断和猜测&#xff0c;并给出了解决方案。不过&#xff0c;美中不足的是没有进一…

JAVA开发中几个常用的lambda表达式!记得收藏起来哦~

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

[蓝桥杯知识学习] 树链

DFS序 什么是DFS序 怎么求DFS序 进入操作&#xff0c;将有计数 出&#xff1a;可以理解为&#xff0c;没有孩子可以去了&#xff08;不能&#xff0c;向下行动&#xff1a;对应于程序里的入栈&#xff09;&#xff0c;所以回到父结点&#xff08;向上行动&#xff0c;对应于程…

关于解决引用第三方依赖突然失效的问题解决办法

目录 背景回顾解决办法结果 背景 出现该问题的背景是这样的。在项目中需要支持加载pdf文档的功能。所以采取了使用第三方PDF库的方法来实现加载pdf文档。集成完后&#xff0c;功能是正常的。后来过了一段时间&#xff0c;发现加载pdf的功能不能正常使用了&#xff0c;加载不出…

聊一下JVM调优

闲聊一下&#xff1a; 这个JVM 相信大家都了解过 但是很少用这个东西 但是面试 一些高级架构师又是必问的一些问题 之前一直不了解这个东西 感觉就是面试造火箭 实际拧螺丝 用于筛选人才 毕业这么多年 也是很少接触这些 就大学的时候学过 简单了解过一些底层 &#xff0c;找工…

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!

一&#xff0c;使用 递归 计算 字符串 的 长度 1&#xff0c;题目描述 2&#xff0c;分析题目 Ⅰ&#xff0c;题目中要求除了函数的形参&#xff0c;函数中不能够使用多余的变量&#xff08;这是比较苛刻的要求&#xff09;。 Ⅱ&#xff0c;根据此&#xff0c;很自然的…