MySQL编程实战LeetCode经典考题

2024-04-01 05:12

本文主要是介绍MySQL编程实战LeetCode经典考题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章简介

本文主要收集了LeetCode上关于MySQL的一些经典考题。
后续也会陆续把所有经典考题补充完整。

175.组合两个表

175.组合两个表
在这里插入图片描述
在这里插入图片描述

解答:

select p.FirstName as firstName, p.LastName as lastName,a.City as city, a.State as state 
from Person p 
left join 
Address a 
on p.PersonId=a.PersonId

说明:比较经典的一道左连接题目。首先,题目有两个表,其次提示是以首个表为中心,第二个表中属性不存在可以为null,从而确定是left join。

181.超过经理收入的员工

181.超过经理收入的员工
在这里插入图片描述
在这里插入图片描述

解答:
子查询方式(MySQL中的子查询指的是在主查询语句内部使用嵌套的SELECT语句)。找员工的薪资 > 员工的经理的薪资即可。

select name as Employee
from Employee e
where e.salary > (select salary from Employee t where t.id = e.managerId);

JOIN方式

SELECT a.NAME AS Employee
FROM Employee AS a 
JOIN Employee AS b 
ON a.ManagerId = b.Id 
AND a.Salary > b.Salary;

说明:对于只给单张表又有多个主题比较的情况,一般可以通过子查询或者内连接的方式来解决。

182. 查找重复的电子邮箱

182.查找重复的电子邮箱
在这里插入图片描述
在这里插入图片描述
解答:

select Email
from Person
group by Email
having count(Email) > 1;

说明:当出现去重的需求时,可以首先考虑分组查询 或 UNION联合查询。

196. 删除重复的电子邮箱

196. 删除重复的电子邮箱
在这里插入图片描述
在这里插入图片描述

解答:
方法一:嵌套

delete from Person where id not in
(select id from (select min(id) as id, count(*) as num from Person group by Email) t
);

方法二:DELETE + WHERE【官方,不易理解】

DELETE p1 FROM Person p1,Person p2
WHEREp1.Email = p2.Email AND p1.Id > p2.Id;

197. 上升的温度

197. 上升的温度
在这里插入图片描述
在这里插入图片描述
解答:
利用日期函数找到了昨天的日期 datediff(a.recordDate,b.recordDate) = 1

select a.id from  Weather as a,Weather as b where datediff(a.recordDate,b.recordDate) = 1 and a.Temperature >b.Temperature;

577. 员工奖金

577. 员工奖金
在这里插入图片描述
在这里插入图片描述
解答:

select name, bonus
from Employee left join Bonus
on Employee.EmpId = Bonus.EmpId
where bonus is null or bonus < 1000;

584. 寻找用户推荐人

584. 寻找用户推荐人
在这里插入图片描述
在这里插入图片描述
非常简单。解答:

select name from customer where referee_id != 2 or referee_id is null

586. 订单最多的客户

586. 订单最多的客户
在这里插入图片描述
在这里插入图片描述
解法1:

select customer_number from (
select customer_number, count(*) as total from Orders group by customer_number
) t
order by t.total desc
limit 1

解法2:【标准】
这里很明显需要分组,而且很特别的是,分组的和我们需要的是同一个字段
又因为需要的是最多的数据,所以这里使用LIMIT 1进行分表即可,SQL如下

SELECTcustomer_number
FROMorders
GROUP BY customer_number
ORDER BY COUNT(*) DESC
LIMIT 1;

595. 大的国家

595. 大的国家
在这里插入图片描述
在这里插入图片描述
非常简单:

SELECTname, population, area
FROMworld
WHEREarea >= 3000000 OR population >= 25000000;

596. 超过5名学生的课

596. 超过5名学生的课
在这里插入图片描述
在这里插入图片描述

方法一:
分组并count,然后数量大于等于5。很简单,有个临时表

select class from (
select class, count(*) as total from courses group by class
) t
where t.total >= 5

方法二:【标准解答】

SELECTclass
FROMcourses
GROUP BY class
HAVING COUNT(student) >= 5;

说明:有多个重复的数据且需要统计数量,一般使用GROUP BY

这篇关于MySQL编程实战LeetCode经典考题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866275

相关文章

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也