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

【LeetCode高频SQL50题-基础版】打卡第9天:第46~50题

文章目录

  • 【LeetCode高频SQL50题-基础版】打卡第9天:第46~50题
    • ⛅前言
    • 患某种疾病的患者
      • 🔒题目
      • 🔑题解
    • 第二高的薪水
      • 🔒题目
      • 🔑题解
    • 按日期分组销售产品
      • 🔒题目
      • 🔑题解
    • 列出指定时间段内所有的下单产品
      • 🔒题目
      • 🔑题解
    • 查找拥有有效邮箱的用户
      • 🔒题目
      • 🔑题解

【LeetCode高频SQL50题-基础版】打卡第9天:第46~50题

⛅前言

  在这个博客专栏中,我将为大家提供关于 LeetCode 高频 SQL 题目的基础版解析。LeetCode 是一个非常受欢迎的编程练习平台,其中的 SQL 题目涵盖了各种常见的数据库操作和查询任务。对于计算机科班出身的同学来说,SQL 是一个基础而又重要的技能。不仅在面试过程中经常会遇到 SQL 相关的考题,而且在日常的开发工作中,掌握 SQL 的能力也是必备的。

  本专栏的目的是帮助读者掌握 LeetCode 上的高频 SQL 题目,并提供对每个题目的解析和解决方案。我们将重点关注那些经常出现在面试中的题目,并提供一个基础版的解法,让读者更好地理解问题的本质和解题思路。无论你是准备找工作还是提升自己的技能,在这个专栏中,你可以学习到很多关于 SQL 的实践经验和技巧,从而更加深入地理解数据库的操作和优化。

  我希望通过这个专栏的分享,能够帮助读者在 SQL 的领域里取得更好的成绩和进步。如果你对这个话题感兴趣,那么就跟随我一起,开始我们的 LeetCode 高频 SQL 之旅吧!

  • 博客主页💖:知识汲取者的博客
  • LeetCode高频SQL100题专栏🚀:LeetCode高频SQL100题_知识汲取者的博客-CSDN博客
  • Gitee地址📁:知识汲取者 (aghp) - Gitee.com
  • 题目来源📢:高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台

患某种疾病的患者

🔒题目

题目来源:1527.患某种疾病的患者

image-20231014173531804

🔑题解

  • 考察知识点
select min(id), email
from Person
group by email;

PS:时隔两天又遇到 LeetCode 的Bug了,我在本地运行这个SQL可以过,但是在LeetCode运行无法通过,测试数据居然 group by都没有进行去重,上次也遇到这个LeetCode的Bug了,害我还思考了很久,这次我留心了

结果发现是我题目没看清楚🤣,题目要求是删除,我直接下意识搞一个查询去了😑

正确的SQL:

delete from Person
where id not in (select min(id)from Persongroup by email
);

结果报错:You can't specify target table 'Person' for update in FROM clause

哎呀😟查询SQL写多了,删除SQL不会写了😑

这个报错的原因是:MySQL不允许在子查询中直接引用待更新的目标表导致的,所以需要使用自连接

delete p from Person p
left join (select min(id) idfrom Persongroup by email
) t 
on p.id = t.id
where t.id is null;

还有一种更见简洁的方式,使用自连接:一旦判断两条记录的邮箱相同,直接删除id较大的那条记录

delete p1 from Person p1, Person p2
where p1.email = p2.email and p1.id > p2.id;

PS:第一种写法的性能要更加高,因为第一条SQL是作笛卡尔积,然后进行过滤,第二条SQL会遍历两张表的每一条记录

第二高的薪水

🔒题目

题目来源:176.第二高的薪水

image-20231014180648548

🔑题解

  • 考察知识点

分析:直接可以使用窗口函数,一下就成功解决了

方式一:使用dense_rank

dese_rank按照指定分组进行排序,不会跳过重复的序号(1,1,2)

select salary SecondHighestSalary
from(select salary, dense_rank() over(order by salary desc) rankingfrom Employee
) t
where ranking = 2;

发现无法处理数据不足两条的情况,数组不足两条预期结果是null,但是实际查询得到的结果是什么都没有

select if(max(ranking) < 2, null, salary) SecondHighestSalary
from(select salary, dense_rank() over(order by salary desc) rankingfrom Employee
) t
where ranking = 2;

方式二:使用nth_value

nth_value用于获取期望值的第n个

1)

select *, nth_value(salary, 2) over(order by salary desc) SecondHighestSalary 
from Employee;
| id | salary | SecondHighestSalary |
| -- | ------ | ------------- |
| 3  | 300    | null          |
| 2  | 200    | 200           |
| 1  | 100    | 200           |

2)

select max(SecondHighestSalary) SecondHighestSalary
from (select nth_value(salary, 2) over(partition by salary order by salary desc) SecondHighestSalary from Employee
) t;

结果发现对于结果集中只有一种薪资时无法获取正确的结果,比如表中薪资 都是1000时,此时结果居然是1000,预期结果是null

方式三:使用普通函数

窗口函数只能在MySQL8或者更高的版本中使用,所以这里我们还算有必要学习如何使用普通函数来解决这一题


按日期分组销售产品

🔒题目

题目来源:1484.按日期分组销售产品

image-20231015233320137

🔑题解

  • 考察知识点group bycountdistinctorder bygroup_concat
    • group_concat(column order by column seprartop char):将多行记录的某一个字段按指定分隔符合并为单个字符串

分析:这一题的难点在于筛选出 products ,只要这个会了,其他的都很简单

1)

select sell_date, count(distinct product) num_sold
from Activities
group by sell_date
| sell_date  | num_sold |
| ---------- | -------- |
| 2020-05-30 | 3        |
| 2020-06-01 | 2        |
| 2020-06-02 | 1        |

2)

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

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

🔒题目

题目来源:1327.列出指定时间段内所有的下单产品

image-20231015234451276

🔑题解

  • 考察知识点group byhaving连接
select p.product_name, sum(o.unit) unit
from Products p join Orders o on p.product_id = o.product_id
where year(o.order_date) = 2020 and month(o.order_date) = 2
group by p.product_id
having sum(o.unit) >= 100

这里还提供一种方法:

select p.product_name, sum(o.unit) unit
from Products p join Orders o on p.product_id = o.product_id
where o.order_date like '2020-02%'
group by p.product_id
having sum(o.unit) >= 100

查找拥有有效邮箱的用户

🔒题目

题目来源:1517.查找拥有有效邮箱的用户

image-20231015234552215

🔑题解

  • 考察知识点正则表达式

遇到这种字符串匹配,很容易想到使用正则表达式

select user_id, name, mail
from Users
where mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';

相关文章:

【LeetCode高频SQL50题-基础版】打卡第9天:第46~50题

文章目录 【LeetCode高频SQL50题-基础版】打卡第9天&#xff1a;第46~50题⛅前言患某种疾病的患者&#x1f512;题目&#x1f511;题解 第二高的薪水&#x1f512;题目&#x1f511;题解 按日期分组销售产品&#x1f512;题目&#x1f511;题解 列出指定时间段内所有的下单产品…...

中断机制-通过volatile实现线程中断停止

4.1.4 大厂面试题中断机制考点 如何停止中断运行中的线程&#xff1f; 通过一个volatile变量实现 package com.nanjing.gulimall.zhouyimo.test;import java.util.concurrent.TimeUnit;/*** author zhou* version 1.0* date 2023/10/15 2:34 下午*/ public class InterruptD…...

Elasticsearch 8.11 中的合并更少,摄取更快

作者&#xff1a;ADRIEN GRAND Elasticsearch 8.11 改进了管理索引缓存的方式&#xff0c;从而减少了段合并。 我们对 Elasticsearch 8.11 从索引缓存回收内存的方式进行了重大更改&#xff0c;这有助于减少合并开销&#xff0c;从而加快索引速度。 使用我们的日志跟踪&#x…...

算法村开篇

大家好我是苏麟从今天开始我将带来算法的一些习题和心得体会等等...... 算法村介绍 我们一步步地学习算法本专栏会以闯关的方式来学习算法 循序渐进地系统的学习算法并掌握大部分面试知识 , 期待和大家一起进步 . 索大祝大家学有所成 , 前程似锦....

Leetcode—136.只出现一次的数字【简单】

2023每日刷题&#xff08;二&#xff09; Leetcode—136.只出现一次的数字 位运算法 实现代码 int singleNumber(int* nums, int numsSize){int i 0;int res 0;for(; i < numsSize; i) {res ^ nums[i];}return res; }运行结果 之后我会持续更新&#xff0c;如果喜欢我的…...

关于RNNoise、webrtc_ns、三角带通滤波器、对数能量

语音特征参数MFCC提取过程详解 其中讲解了&#xff1a;三角带通滤波器 、计算每个滤波器组输出的对数能量、对数能量、经离散余弦变换&#xff08;DCT&#xff09;得到MFCC系数 推荐阅读某乎这位大佬的全部文章&#xff1a; 下面是几篇出自这位大佬的很好的文章&#xff1a; …...

c语言练习89:链表的使用

链表的使用 虽然有这么多的链表的结构&#xff0c;但是我们实际中最常⽤还是两种结构&#xff1a; 单链表 和 双向带头循环链表 1. ⽆头单向⾮循环链表&#xff1a;结构简单&#xff0c;⼀般不会单独⽤来存数据。实际中更多是作为其他数据结 构的⼦结构&#xff0c;如哈希桶、…...

ArkTS及openHarmony

补充 padding&#xff1a;内边距&#xff0c;也就是盒子边和盒子内部的距离 margin&#xff1a;外边距&#xff0c;也就是盒子和盒子的距离 openHarmony应用开发及UI界面 常用布局 Row 水平线性布局核心代码 子控件会共享同一行&#xff0c;也就是都在同一行内 Preview C…...

Idea怎么配置Maven才能优先从本地仓库获取依赖

网上的方法 : 在设置中搜索 Runner ,在VM Option中设置参数 -DarchetypeCataloginternal删除 解压后的依赖包中的 _remote.repositories m2e-lastUpdated.properties *.lastUpdated 文件。 上边都没有效果 最终的解决方法&#xff0c;修改maven配置文件settings.xml 主要两个…...

聊聊HttpClient的DnsResolver

序 本文主要研究一下HttpClient的DnsResolver DnsResolver org/apache/http/conn/DnsResolver.java /*** Users may implement this interface to override the normal DNS lookup offered* by the OS.** since 4.2*/ public interface DnsResolver {/*** Returns the IP a…...

剑指智能驾驶,智己LS6胜算几何?

监制 | 何玺 排版 | 叶媛 10月12日&#xff0c;IM智己旗下的新车智己LS6宣布上市。 新车型搭载尖端科技多项&#xff0c;其中以“全画幅数字驾舱屏”、和城市高阶智能辅助驾驶为核心的智驾技术&#xff0c;更是引来众多用户关注。 01 新能源新卷王智己LS6 智己LS6一发布就…...

网络工程师知识点5

71、什么是FTP&#xff1f; FTP是文件传输协议。 FTP传输数据时支持两种传输模式&#xff1a;ASCII模式和二进制模式。 需要TCP的21号端口来建立控制连接 需要TCP的20号端口来建立数据连接 72、什么是telnet&#xff1f; Telnet提供了一个交互式操作界面&#xff0c;允许终端远…...

未来展望:大型语言模型与 SQL 数据库集成的前景与挑战

一、前言 随着 GPT-3、PaLM 和 Anthropic 的 Claude 等大型语言模型 (LLM) 的出现引发了自然语言在人工智能领域的一场革命。这些模型可以理解复杂的语言、推理概念并生成连贯的文本。这使得各种应用程序都能够使用对话界面。然而&#xff0c;绝大多数企业数据都存储在结构化 …...

SpringCloud-Hystrix

一、介绍 &#xff08;1&#xff09;避免单个服务出现故障导致整个应用崩溃。 &#xff08;2&#xff09;服务降级&#xff1a;服务超时、服务异常、服务宕机时&#xff0c;执行定义好的方法。&#xff08;做别的&#xff09; &#xff08;3&#xff09;服务熔断&#xff1a;达…...

Ansible脚本进阶---playbook

目录 一、playbooks的组成 二、案例 2.1 在webservers主机组中执行一系列任务&#xff0c;包括禁用SELinux、停止防火墙服务、安装httpd软件包、复制配置文件和启动httpd服务。 2.2 在名为dbservers的主机组中创建一个用户组&#xff08;mysql&#xff09;和一个用户&#x…...

pytorch 模型部署之Libtorch

Python端生成pt模型文件 net.load(model_path) net.eval() net.to("cuda")example_input torch.rand(1, 3, 240, 320).to("cuda") traced_model torch.jit.trace(net, example_input) traced_model.save("model.pt")output traced_model(exa…...

Unity——数据存储的几种方式

一、PlayerPrefs PlayerPrefs适合用于存储简单的键值对数据 存储的数据会在游戏关闭后依然保持&#xff0c;并且可以在不同场景之间共享&#xff0c;适合用于需要在游戏不同场景之间传递和保持的数据。 它利用key-value的方式将数据保存到本地&#xff0c;跟字典类似。然后通…...

『heqingchun-ubuntu系统下安装cuda与cudnn』

ubuntu系统下安装cuda与cudnn 一、安装依赖 1.更新 sudo apt updatesudo apt upgrade -y2.基础工具 sudo apt install -y build-essential python二、安装CUDA 1.文件下载 网址 https://developer.nvidia.com/cuda-toolkit-archive依次点击 (1)“CUDA Toolkit 11.6.2”…...

Unity AI Muse 基础教程

Unity AI Muse 基础教程 Unity AI 内测资格申请Unity 项目Package ManagerMuse Sprite 安装Muse Texture 安装 Muse Sprite 基础教程什么是 Muse Sprite打开 Muse Sprite 窗口Muse Sprite 窗口 参数Muse Sprite Generations 窗口 参数Muse Sprite Generations 窗口 画笔Muse Sp…...

pgsl基于docker的安装

1. 有可用的docker环境 &#xff0c;如果还没有安装docker&#xff0c;则请先安装docker 2. 创建pg数据库的挂载目录 mkdir postgres 3. 下载pg包 docker pull postgres 这个命令下载的是最新的pg包&#xff0c;如果要指定版本的话&#xff0c;则可以通过在后面拼接 :versio…...

基于Python的线上学习资源智能推荐系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Python的线上学习资源智能推荐系统&#xff0c;以实现个性化学习资源的精准推送。具体而言&#xff0c;研究目的可概括为以下几个方面&am…...

Halcon读取条形码和二维码

读取条形码1创建条形码句柄create_bar_code_model(: : GenOaramName,GenParamValue: BarCodeHandle)2设置条形码参数GenParamName 设置的参数element_size_min 条形码最小单位&#xff0c;黑条之间的最小间距barcode_width_min条形码的最小宽度persistence 设置条形码的查找精度…...

从Kaggle竞赛到真实业务:聊聊那些年我们用错的AI算法和开源库

从Kaggle竞赛到真实业务&#xff1a;聊聊那些年我们用错的AI算法和开源库 在数据科学社区里&#xff0c;Kaggle竞赛排行榜和真实业务需求之间&#xff0c;似乎永远隔着一道看不见的鸿沟。那些在竞赛中斩获高分的神奇模型&#xff0c;一旦放进生产环境&#xff0c;常常表现得像…...

FFTW实战指南:从编译优化到音频信号处理

1. FFTW库简介与核心优势 FFTW&#xff08;Fastest Fourier Transform in the West&#xff09;是当前公认性能最优异的快速傅里叶变换开源库&#xff0c;其名称直译为"西方最快的傅里叶变换"。我在音频信号处理项目中首次接触这个库时&#xff0c;就被它惊人的运算…...

数据标注技术指南:高效标注与数据质量优化实践

数据标注技术指南&#xff1a;高效标注与数据质量优化实践 【免费下载链接】cvat Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale. 项目地址: https://gitcode.com/Git…...

如何用Chatterbox TTS打造多语言智能语音助手:从零开始的完整实战指南 [特殊字符]

如何用Chatterbox TTS打造多语言智能语音助手&#xff1a;从零开始的完整实战指南 &#x1f3a4; 【免费下载链接】chatterbox Open source TTS model 项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox 想要为你的应用添加逼真的语音合成功能吗&a…...

三相三电平Vienna整流器:SPWM与SVPWM调制仿真及控制策略对比分析

三相三电平vienna整流器SPWM和SVPWM调制仿真 基于plecs搭建 温度场分析 双PI控制 锁相环控制 中点电压平衡控制 功率因数为1 SPWM和SVPWM调制对比 谐波畸变率对比分析 电压利用率对比分析 电压平衡和不平衡控制对比 图1 仿真模型 图2 温度场分析 图3 交流电压电流三电平…...

Vivado实战:从零封装自定义接口IP核的完整流程

1. 为什么需要封装自定义IP核 第一次接触FPGA开发时&#xff0c;我总喜欢把整个工程的所有代码都堆在一个项目里。直到某天需要复用之前的HDMI显示模块时&#xff0c;才发现要手动复制几十个文件&#xff0c;还得逐个修改端口连接。这种重复劳动让我意识到&#xff1a;封装IP核…...

Cadence实战:从原理图到PCB的完整导入流程解析

1. Cadence设计流程概述 刚接触Cadence的硬件工程师常会遇到一个经典问题&#xff1a;为什么原理图设计得漂漂亮亮&#xff0c;导入PCB时却总出各种幺蛾子&#xff1f;这就像做菜时备好了所有食材&#xff0c;下锅时却发现灶台点不着火。我在带新人时发现&#xff0c;90%的导入…...

手把手教你用Wireshark抓包分析Opener EIP通信,快速定位ForwardOpen失败原因

深度解析EtherNet/IP通信&#xff1a;用Wireshark诊断ForwardOpen失败的实战指南 当你在MCU上成功移植了Opener协议栈&#xff0c;TCP连接建立正常&#xff0c;却在关键时刻遭遇ForwardOpen失败时&#xff0c;那种挫败感我深有体会。去年在汽车生产线控制系统项目中&#xff0c…...