每日刷一刷力扣SQL(八)

news/2024/9/20 4:45:24/ 标签: sql, 数据库

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

考察点:窗口函数的使用

sql">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

其他解法: 

sql">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()

sql">select user_id,concat(upper(LEft(name,1)),lower(substring(name,2))) as name
from Users
order by user_id ASC
sql">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 次。
  • |:表示逻辑或,匹配 | 两侧的任意一个表达式。
sql">select *
from Patients
where conditions REGEXP '^DIAB1|\\sDIAB1' 

196.删除重复的电子邮箱

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

sql">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,降序排列再返回第二条记录可以得到第二大的值。

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

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

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


http://www.ppmy.cn/news/1520780.html

相关文章

C#中的PropertyInfo

在C#中&#xff0c;PropertyInfo 是一个类&#xff0c;属于 System.Reflection 命名空间&#xff0c;它提供了反射&#xff08;Reflection&#xff09;机制中用于获取属性信息的方法和属性。反射是一种强大的机制&#xff0c;允许程序在运行时检查和操作自身的结构&#xff0c;…

书生大模型实战营第三期进阶岛第三课——LMDeploy 量化部署实践

LMDeploy 量化部署实践 任务一&#xff1a;创建虚拟环境创建文件夹LMDEPLOY用于存放课程相关的文件创建模型软连接LMDeploy验证启动模型文件LMDeploy API部署InternLM2.5-1.8b以命令行形式连接API服务器以Gradio网页形式连接API服务器LMDeploy KV量化W4A16 模型量化和部署W4A16…

佰朔资本:热热热!关于这项业务,上市公司扎堆回复

跟着折叠屏手机概念火爆&#xff0c;与折叠屏手机相关的上市公司股价走出独立行情。 近期&#xff0c;包含科森科技、凯盛科技、国风新材、鼎龙科技、金银河在内的多家上市公司股价出现显着上涨。其间&#xff0c;科森科技结束7连板&#xff0c;国风新材结束3连板&#xff0c;…

GraphPad Prism下载安装教程怎样中文汉化

GraphPad Prism下载安装教程怎样中文汉化&#xff1a; GraphPad Prism 是一款集生物统计、曲线拟合和科技绘图于一体的软件&#xff0c;主要用于医学和生物科学领域的数据分析和绘图&#xff0c;具有高效、简便、多功能和高质量的特点&#xff0c;被广泛应用于科研、教育和业界…

Android中AsyncTask的基本用法

Android中AsyncTask的基本用法 不过为了更加方便我们在子线程中对UI进行操作&#xff0c;Android还提供了另外一些好用的工具&#xff0c;比如AsyncTask。借助AsyncTask&#xff0c;即使你对异步消息处理机制完全不了解&#xff0c;也可以十分简单地从子线程切换到主线程。当然…

静态工厂模式(简单工厂模式)与动态工厂模式(工厂方法模式)

1. 简单工厂模式 核心是定义一个创建对象的接口&#xff0c;将对象的创建和本身的业务逻辑分离&#xff0c;降低系统的耦合度&#xff0c;使得两个修改起来相对容易些&#xff0c;当以后实现改变时&#xff0c;只需要修改工厂类即可。该模式对对象创建管理方式最为简单&#x…

热门跨境平台的IP代理如何选择?入局IP知识

在飞速发展的数字时代&#xff0c;拥有一个好的IP地址可以说是开展网络业务成功的关键之一。无论你是想在TikTok、Instagram还是Facebook上发展自己的业务&#xff0c;IP地址的选择都会对你的运营产生重要影响。让我们来深入了解一下什么是原生IP和住宅IP&#xff0c;以及它们对…

docker实战基础二(Docker基础命令)

一、Docker 镜像的标签 更改 Docker 镜像的标签(tag)可以通过 docker tag 命令来实现。这个命令允许你为现有的镜像创建一个新的标签。这对于组织和管理镜像非常有用,特别是在开发和部署工作流中。 命令语法 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]SOURCE_IMA…

python-实战4拆分pdf文件

Wps等软件拆分一份页数较多的PDF文件时&#xff0c;经常会出现要收费或者只能拆分其中几页的情况&#xff0c;下面我们就自己来写代码来实现这个收费功能。 课程中已经初步学习了如何将一个PDF文件拆分成总页数个子PDF文件&#xff0c;我们基于其中的思路进行改进&…

plugin-a: ERROR Missing publisher name.报错解决

在我编译项目扩展时&#xff0c;会报错如下 plugin-a: ERROR Missing publisher name. Learn more: https://code.visualstudio.com/api/working-with-extensions/publishing-extension#publishing-extensions 这是因为 VS Code 扩展要求在 package.json 中指定一个 publisher…

分享GoFly项目案例-降本增效数字化解决多仓库、动态仓库(车辆存储)、动态调调度、动态配送方案

前言 传统的生产原料企业在数字化转型中&#xff0c;需要到一个客户与产品配送&#xff08;运输&#xff09;管理及调度系统。系统要达到管理者可以看到产品数据&#xff0c;做业务的可以了解到货品库存、货品位置&#xff08;可调度最近货品给客户&#xff09;、货品配送情况…

python库pdf转word

要在 Python 中将 PDF 文件转换为 Word 文档&#xff08;.doc 或 .docx 格式&#xff09;&#xff0c;您可以使用几个不同的库来实现这一目标。这里介绍几种常用的库及其使用方法&#xff1a; 1. 使用 pdf2docx pdf2docx 是一个流行的 Python 库&#xff0c;用于将 PDF 文件转换…

OpenHarmony Camera源码分析

一、简介 当前&#xff0c;开源在科技进步和产业发展中发挥着越来越重要的作用&#xff0c;OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;赋予了开发者孕育创新的种子&#xff0c;也为数字化产业发展开辟了一片土壤。深开鸿是开源的坚定践行者&#xff0c…

力扣刷题(4)

正则表达式匹配 正则表达式匹配-力扣 思路来源&#xff1a;ithewei 若 *p 为空&#xff0c;*s 为空则匹配&#xff0c;*s 为非空则不匹配&#xff1b;当 *s为非空时&#xff0c;*p *s || *p ‘.’ 时第一个字符匹配&#xff1b;若 *(p1) ! ’ * 时&#xff0c;则递归判断…

深入解析 Spring Boot 中 MyBatis 自动配置的流程

在 Spring Boot 项目中&#xff0c;自动配置是一个非常强大的功能&#xff0c;可以极大简化配置工作。本文将通过 MyBatis 的自动配置为例&#xff0c;详细解析 Spring Boot 自动配置的整个流程&#xff0c;包括从 META-INF/spring.factories 文件到 mysql-connector-java 依赖…

Django+Vue社区养老管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

SPI通信协议(软件SPI和硬件SPI)

今天介绍一种新的通信协议——SPI&#xff0c;相比于之前学习的I2C&#xff0c;SPI通信的速率更快&#xff0c;相对而言&#xff0c;需要的资源就比较多&#xff0c;SPI通信需要六根线&#xff1a;四根通信线&#xff0c;SCK&#xff08;时钟线&#xff09;&#xff0c;MOSI&am…

三行五行的 SQL 只存在于教科书和培训班

教科书中 SQL 例句通常都很简单易懂&#xff0c;甚至可以当英语来读&#xff0c;这就给人造成 SQL 简单易学的印象。 但实际上&#xff0c;这种三行五行的 SQL 只存在于教科书和培训班&#xff0c;我们在现实业务中写的 SQL 不会论行&#xff0c;而是以 K 计的&#xff0c;一条…

前端使用Mock的场景与具体使用方法

在现代前端开发中&#xff0c;Mock技术扮演着至关重要的角色。无论是开发初期、测试阶段&#xff0c;还是在进行复杂的前后端分离开发时&#xff0c;Mock都能极大地提高开发效率和代码质量。本文将深入探讨前端开发中使用Mock的常见场景&#xff0c;并详细介绍具体的使用方法。…

Vue(七) TodoList案例1.0

文章目录 组件化编码流程(通用)1. 拆分静态组件2. 初始化列表展示动态数据如何让一个标签动态的拥有某一个属性 3. 按回车添加todo子组件给父组件传值之props 4. 勾选与取消勾选一个Todo5. 删除6. footer底部统计7. footer底部交互7.1 全选框自动打勾7.2 全选框取消勾选 8. 清除…