当前位置: 首页 > news >正文

每日刷一刷力扣SQL(八)

185.部门工资前三高的所有员工

考察点:窗口函数的使用

select d.name as Department ,t.name as Employee,t.salary as Salary
from (select* ,DENSE_Rank() over(PARTITION BY departmentId order by salary DESC) as rank_idfrom Employee
) t join Department d on t.departmentId =  d.id
where rank_id <=3

其他解法: 

SELECTDepartment.NAME AS Department,e1.NAME AS Employee,e1.Salary AS Salary 
FROMEmployee AS e1,Department 
WHEREe1.DepartmentId = Department.Id AND 3 > (SELECT  count( DISTINCT e2.Salary ) FROM	Employee AS e2 WHERE	e1.Salary < e2.Salary 	AND e1.DepartmentId = e2.DepartmentId 	) 
ORDER BY Department.NAME,Salary DESC;

1667.修复表中的文字

 考察点:字符串处理函数 concat(),upper(),lower(),substring()

select user_id,concat(upper(LEft(name,1)),lower(substring(name,2))) as name
from Users
order by user_id ASC
select user_id,concat(upper(left(name, 1)), lower(right(name, length(name) - 1))) as name
from users 
order by user_id

1527.患某种疾病的患者

使用SQL匹配正则表达式

常见正则表达式模式

  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • .:匹配任意单个字符。
  • [abc]:匹配方括号内的任意一个字符。
  • [a-z]:匹配指定范围内的字符。
  • *:匹配前面的字符零次或多次。
  • +:匹配前面的字符一次或多次。
  • ?:匹配前面的字符零次或一次。
  • {n}:匹配前面的字符恰好 n 次。
  • |:表示逻辑或,匹配 | 两侧的任意一个表达式。
select *
from Patients
where conditions REGEXP '^DIAB1|\\sDIAB1' 

196.删除重复的电子邮箱

慢查询优化经验的同学会清楚,在实际生产中,面对千万上亿级别的数据,连接的效率往往最高,因为用到索引的概率较高。

delete p1 from Person p1 , Person p2 
wherep1.Email = p2.Email and p1.ID > p2.ID

a. 从表p1取出3条记录;
b. 拿着第1条记录去表p2查找满足WHERE的记录,代入该条件p1.Email = p2.Email AND p1.Id > p2.Id后,发现没有满足的,所以不用删掉记录1;
c. 记录2同理;
d. 拿着第3条记录去表p2查找满足WHERE的记录,发现有一条记录满足,所以要从p1删掉记录3;
e. 3条记录遍历完,删掉了1条记录,这个DELETE也就结束了。

176.第二高的薪水

思路:使用limit 和 offset

limit n子句表示查询结果返回前n条数据

offset n表示跳过x条语句

limit y offset x 分句表示查询结果跳过 x 条数据,读取前 y 条数据

使用limit和offset,降序排列再返回第二条记录可以得到第二大的值。

selectifNULL((select distinct salary from Employee order by salary DESC limit 1,1),null)
as SecondHighestSalary

另一种思路:比薪水最大的还要小的一条数据

select ifNULL(max(salary),NULL)  as SecondHighestSalary
from Employee
where salary < (select max(distinct salary) from Employee 
)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 综合评价 | 基于层次-熵权-变异系数-正态云组合法的综合评价模型(Matlab)
  • java 使用 aws s3 sdk 通过分段下载来实现 html 页面 video 的断点播放、拖动进度播放
  • 小程序面试题一
  • 【SAM下游任务微调】TS-SAM: Fine-Tuning Segment-Anything Model for Downstream Tasks
  • DDoS攻击的应对策略
  • 小程序学习day13-API Promise化、全局数据共享(状态管理)、分包
  • 探索安全领域的新星:哈希函数SHA3-512
  • 基于深度学习的高效模型压缩
  • FPGA开发——IIC实现简单的串口回环
  • Edge-TTS:微软推出的,免费、开源、支持多种中文语音语色的AI工具[Python代码]
  • Windows连接虚拟机中的mysql5失败
  • 跨域解决 | 面试常问问题
  • openGauss极简版单节点安装
  • 专题---自底向上的计算机网络(数据链路层)
  • 在国产芯片上实现YOLOv5/v8图像AI识别-【2.5】yolov8使用C++部署在RK3588更多内容见视频
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • axios 和 cookie 的那些事
  • Centos6.8 使用rpm安装mysql5.7
  • django开发-定时任务的使用
  • JWT究竟是什么呢?
  • Making An Indicator With Pure CSS
  • 大整数乘法-表格法
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 如何选择开源的机器学习框架?
  • 手机端车牌号码键盘的vue组件
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 我是如何设计 Upload 上传组件的
  • 整理一些计算机基础知识!
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​ssh免密码登录设置及问题总结
  • ​香农与信息论三大定律
  • #include到底该写在哪
  • #nginx配置案例
  • #pragma pack(1)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (a /b)*c的值
  • (附源码)php新闻发布平台 毕业设计 141646
  • (回溯) LeetCode 40. 组合总和II
  • (六)软件测试分工
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 成都线下面基会拉开序幕
  • .NET Micro Framework初体验
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • @Autowired自动装配
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [023-2].第2节:SpringBoot中接收参数相关注解
  • [16/N]论得趣
  • [AR Foundation] 人脸检测的流程
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C#学习笔记]Newtonsoft.Json