高频 SQL 50 题(基础版)| 高级字符串函数 / 正则表达式 / 子句:1667. 修复表中的名字、1527. 患某种疾病的患者、196. 删除重复的电子邮箱、176. 第二高的薪水、...

高级字符串函数 / 正则表达式 / 子句

1667. 修复表中的名字

题目链接:1667. 修复表中的名字
状态:学会了

思路:
要求修复名字(首字母大写,其他字母小写),按顺序返回。
想法就是取出名字这一列,把第一个字母与其他字符分开,分别对应修改大小写,然后连在一起。
高级字符串函数:
SUBSTRING(column_name, start, length):这将从列的值中提取一个子字符串,从指定的起始位置开始,直到指定的长度。
UPPER(expression):这会将字符串表达式转换为大写。
LOWER(expression):这会将字符串表达式转换为小写。
CONCAT(string1, string2, ...):这会将两个或多个字符串连接成一个字符串。

select user_id, concat(upper(substring(name, 1, 1)), lower(substring(name, 2)))as name
from Users
order by user_id;

1527. 患某种疾病的患者

题目链接:1527. 患某种疾病的患者
状态:学会了

思路:
需要查询患I类糖尿病的信息返回。
like 简单模式匹配字符,通配符只有%(代表任意数量的任意字符)和 _(代表单个任意字符)。这个问题可以归结于两种情况:1.条件代码以"DIABI"开头和2.条件代码包含" DIABI".

select patient_id, patient_name, conditions
from Patients
where conditions like "% DIAB1%" or conditions like "DIAB1%";

196. 删除重复的电子邮箱

题目链接:196. 删除重复的电子邮箱
状态:学会了

思路:
要求删除所有重复的电子邮件(保留id最小的一个)。
1.使用自连接 join,找到哪些记录是重复的:email字段字段相同,但是id不同的记录组合。
2.执行删除条件 deletedelete p1表示我们要删除p1表中满足连接条件的那些行。

delete p1
from Person p1
join Person p2
on p1.email=p2.email and p1.id>p2.id;

176. 第二高的薪水

题目链接:176. 第二高的薪水
状态:学会了

思路:
要找到第二高的不同的薪水,若不存在返回NULL。
第一反应肯定是用到ifnull函数,如salary不存在直接返回null。这是我写的第一版的代码,有一个问题是:当不存在rank_sal=2,表是个空的,infull没有读取到任何salary的值,所以没有东西替换,直接就错了。

select ifnull(salary, NULL) as SecondHighestSalary
from (select salary, (dense_rank() over(order by salary desc)) as rank_salfrom Employee
) a
where rank_sal=2

反思了一下这个写法,觉得应该把查询salary整个部分的做成子查询,放进infull里面。这样当不存在rank_sal=2,子查询返回的结果是null,所以ifnull返回null。

select (ifnull ((select distinct salaryfrom (select salary, (dense_rank() over(order by salary desc)) as rank_salfrom Employee) awhere rank_sal=2) , NULL)
) as SecondHighestSalary

1484. 按日期分组销售产品

题目链接:1484. 按日期分组销售产品
状态:学会了

思路:
找出每个日期(排序)、销售的不同产品的数量及名称(按字典排序)。
1.对日期进行分组,然后用count distinct统计分组的物品数量。
2.对每个组中唯一名称进行排序和连接,使用的是group_concat()函数,将分组中的多行的多个值组合成一个字符串。
3.对最后结果的日期进行升序排序。

select sell_date, count(distinct product) as num_sold,group_concat(distinct product order by product separator ',') as products
from Activities
group by sell_date
order by sell_date;

MySQL中GROUP_CONCAT函数语法:

GROUP_CONCAT(DISTINCT expression1ORDER BY expression2SEPARATOR sep
); 

1327. 列出指定时间段内所有的下单产品

题目链接:1327. 列出指定时间段内所有的下单产品
状态:自己写出来的

思路:
要求在2020年2月份下单数量不少于100的产品的名字和数目。
1.内层子查询:筛选orders表中日期在2020年2月份的,按照产品id分类,计算产品的累计销售数目。
2.外层查询:筛选累计销售数目大于等于100的,products表左连接子查询结果,通过on p.product_id=o.product_id关联,返回名字和累计销售数目。

select p.product_name, o.sum_unit as unit
from Products p 
left join (select product_id, sum(unit) as sum_unitfrom Orderswhere date_format(order_date, "%Y-%m")='2020-02'group by product_id
) o on p.product_id=o.product_id
where o.sum_unit>=100

1517. 查找拥有有效邮箱的用户

题目链接:1517. 查找拥有有效邮箱的用户
状态:学会了

思路:
要求返回符合要求的:必须 以字母开头,剩下可以包含字母(大写或小写),数字,下划线 ‘_’ ,点 ‘.’ 和/或破折号 ‘-’ ,最后必须为 ‘@leetcode.com’ 。
以任何顺序返回结果表。
正则表达式 regexp, 就是 regular expression 正则表达式 的意思:
^ 表示以后面的字符为开头
[] 表示括号内任意字符
- 表示连续
* 表示重复前面任意字符任意次数
\ 用来转义后面的特殊字符,以表示字符原本的样子,而不是将其作为特殊字符使用
$ 表示以前面的字符为结尾
正则表达式里有一些字符被赋予了特殊意义,用于表示特定的匹配规则,若要匹配这些字符本身,就需要使用转义字符 \。常见的具有特殊含义的字符如下:
元字符:像 .、*、+、?、^、$、(、)、[、]、{、}、| 等。
特定的转义序列:\d 代表任意数字,\s 代表任意空白字符,\w 代表任意字母、数字或下划线。

select *
from Users
where mail regexp '^[a-zA-Z][a-zA-Z\_\.\-]+@leetcode\.com$';

一点不着边际的话

这是第一遍刷,实在是很难判断出来什么时候用left join,什么时候join,什么时候inner join,什么时候用子查询,还有MySQL这一大把的奇妙小函数,目前还需要记住关于日期和处理字符串的。

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

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

相关文章

《异步江湖:XHR、Promise 与 Event Loop 的恩怨情仇》

XMLHttpRequest XMLHttpRequest(简称 XHR)是浏览器提供的一个 JavaScript 对象,用于在客户端和服务器之间发送 HTTP 请求。它是实现 AJAX(Asynchronous JavaScript and XML) 技术的核心工具,允许网页在不…

C++课程设计【宿舍管理查询软件】

宿舍管理查询软件 一、题目描述二、源码以及说明宿舍管理查询软件设计与实现1. 系统设计思路1.1 功能需求1.2 数据结构2. 系统实现3. 代码说明3.1 数据结构3.2 功能实现3.3 文件存储4. 示例运行输入输出5. 总结其他QT文章推荐一、题目描述 (一)问题描述 为宿舍管理人员编写一…

MWC 2025 | 移远通信推出AI智能无人零售解决方案,以“动态视觉+边缘计算”引领智能零售新潮流

在无人零售市场蓬勃发展的浪潮中,自动售货机正经历着从传统机械式操作向AI视觉技术的重大跨越。 移远通信作为全球领先的物联网整体解决方案供应商,精准把握行业趋势,在2025世界移动通信大会(MWC)上宣布推出全新AI智能…

C语言常用的头文件,include文件

常用头文件功能速览 1 ,通用常用头文件 01. stdio.h——标准输入输出 02. stdlib.h——内存管理与分配、随机数、字符串转换 03. string.h——字符串处理 04. math.h——数学 05. time.h——时间和日期 06. ctype…

[MySQL初阶]MySQL(4)基本查询

标题:[MySQL初阶]MySQL(4)基本查询 水墨不写bug 文章目录 一. 数据表设计二、对数据表的操作1. Create 操作(插入数据)查看最近受影响的行数: 2. Retrieve 操作(读取数据)&#xff0…

小米智能音箱Pro搭载“超级小爱”,支持远程控车

大家好,今天我要给大家好好唠唠小米智能音箱Pro,尤其是它搭载的“超级小爱”,那功能可太强大了,还支持远程控车,真的是给我们的生活带来了超多便利和惊喜。 先来说说这小米智能音箱Pro的外观。它的设计非常简约时尚,整体造型方方正正,线条流畅,放在家里任何一个角落都…

react中的useContext--为什么使用(一)

React 的数据传递流程 在 React 中,数据传递通常是自上而下的,也就是父组件把数据通过 props 传递给子组件,子组件无法直接修改父组件的数据。 例子:父组件向子组件传递数据 const Parent () > {const user { name: &quo…

如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能

作者:来自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中,通过使用 LLM 生成的词汇,为搜索应用增强自动补全功能,实现更智能、更动态的搜索建议。 自动补全是搜索应用中的一项关键功能,它通过在用户输入时实…

MAVEN手动配置(阿里云)全教程

介于网上各种各样的MAVEN配置过程中方法大致相同却细节参差不齐,我总结了我遇见的一些问题,来完全的解决MAVEN手动配置的全过程,以及分享解决小毛病的经验。 所需材料: MAVEN3.9.9(下载适合自己的版本即可&#xff09…

DeepSeek 3FS:端到端无缓存的存储新范式

在 2025 年 2 月 28 日,DeepSeek 正式开源了其高性能分布式文件系统 3FS【1】,作为其开源周的压轴项目,3FS 一经发布便引发了技术圈的热烈讨论。它不仅继承了分布式存储的经典设计,还通过极简却高效的架构,展现了存储技…

HarmonyOS:如何将图片转为PixelMap并进行图片缓存策略

前言:在HarmonyOS项目开发中,我们使用Ark-Ts语言开发项目。我们有个功能是拍照,除了正常显示出来,并且上传服务器。我在开发过程中,遇到的问题是,如果离开这个页面再回到当前页面仍要显示图片,那…

2025.3.9机器学习笔记:文献阅读

2025.3.9周报 一、文献阅读题目信息摘要Abstract创新点网络架构实验结论不足以及展望 一、文献阅读 题目信息 题目: Time-series generative adversarial networks for flood forecasting期刊: Journal of Hydrology作者: Peiyao Weng, Yu …

linux固定IP并解决虚拟机无法ping其他电脑问题

linux固定IP并解决虚拟机无法ping其他电脑问题 1.找到网卡文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 2.编辑文件信息 BOOTPROTO 这个dhcp改为static#添加以下内容IPADDR<你的IP地址>NETMASK<子网掩码>&#xff0c;例如255.255.255.0。GATEWAY<网…

Spring实战spring-ai运行

目录 1. 配置 2 .搭建项目 3. 查看对应依赖 3.1 OpenAI 依赖 3.2 配置 OpenAI API 密钥 application.properties application.yml 4. openai实战 5. 运行和测试 6. 高级配置 示例&#xff1a;配置模型和参数 解释&#xff1a; 7. 处理异常和错误 示例&#xff1a;…

docker:配置 Docker 镜像加速器

1 镜像加速器介绍 默认情况下&#xff0c;将来从docker hub&#xff08;https://hub.docker.com/&#xff09;上下载docker镜像&#xff0c;太慢。一般都会配置镜像加速器&#xff1a; USTC&#xff1a;中科大镜像加速器&#xff08;https://docker.mirrors.ustc.edu.cn&…

[内网安全] Windows 本地认证 — NTLM 哈希和 LM 哈希

关注这个专栏的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;SAM 文件 & Windows 本地认证流程 0x0101&#xff1a;SAM 文件简介 Windows 本地账户的登录密码是存储在系统本地的 SAM 文件中的&#xff0c;在登录 Windows 的时候&am…

算法-图-dijkstra 最短路径

理论知识 dijkstra三部曲 朴素版dijkstra 模拟过程 堆优化版dijksra 经典模版例题 Dijkstra求最短路 I 参加科学大会&#xff08;第六期模拟笔试&#xff09;--模版题 网络延迟 ref 理论知识 最短路是图论中的经典问题即&#xff1a;给出一个有向图&#xff0c;一…

Qt添加MySql数据库驱动

文章目录 一. 安装MySql二.编译mysql动态链接库 Qt版本&#xff1a;5.14.2 MySql版本&#xff1a;8.0.41 一. 安装MySql 参考这里进行安装&#xff1a;https://blog.csdn.net/qq_30150579/article/details/146042922 将mysql安装目录里的bin&#xff0c;include和lib拷贝出来…

浅论数据库聚合:合理使用LambdaQueryWrapper和XML

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数据库聚合替代内存计算&#xff08;关键优化&#xff09;二、批量处理优化四、区域特殊处理解耦五、防御性编程增强 前言 技术认知点&#xff1a;使用 XM…

Ubuntu 22.04安装NVIDIA A30显卡驱动

一、安装前准备 1.禁用Nouveau驱动 Ubuntu默认使用开源Nouveau驱动&#xff0c;需要手动禁用&#xff1a; vim /etc/modprobe.d/blacklist-nouveau.conf # 添加以下内容&#xff1a; blacklist nouveau options nouveau modeset0 # 更新内核并重启&#xff1a; update-initr…