【LeetCode高频SQL50题-基础版】打卡第1天:第1~10题

news2025/1/17 15:46:19

文章目录

  • 【LeetCode高频SQL50题-基础版】打卡第1天:第1~10题
    • ⛅前言
  • 可回收且低脂的产品
    • 🔒题目
    • 🔑题解
  • 寻找用户推荐人
    • 🔒题目
    • 🔑题解
  • 大的国家
    • 🔒题目
    • 🔑题解
  • 文章浏览I
    • 🔒题目
    • 🔑题解
  • 无效的推文
    • 🔒题目
    • 🔑题解
  • 使用唯一标识码替代员工ID
    • 🔒题目
    • 🔑题解
  • 产品销售分析I
    • 🔒题目
    • 🔑题解
  • 进店却未进行交易的顾客
    • 🔒题目
    • 🔑题解
  • 上升的温度
    • 🔒题目
    • 🔑题解
  • 每台机器的进程平均运行时间
    • 🔒题目
    • 🔑题解

【LeetCode高频SQL50题-基础版】打卡第1天:第1~10题

⛅前言

  在这个博客专栏中,我将为大家提供关于 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)全球极客挚爱的技术成长平台

可回收且低脂的产品

🔒题目

题目来源:1757.可回收且低脂的产品

image-20230803153711409

🔑题解

select product_id from products where low_fats='Y' and recyclable='Y';

寻找用户推荐人

🔒题目

题目来源:584.寻找用户推荐人

image-20230803153748714

🔑题解

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

注意:null不参与比较运算,所以直接这样写select name from customer where referee_id!=2会直接忽略空字段,从而得到错误的答案,所以切勿踩坑

大的国家

🔒题目

题目来源:595.大的国家

image-20230803153819406

🔑题解

select name, population, area from world where area >= 3000000 or population >= 25000000;

使用 or 会使索引会失效,在数据量较大的时候查找效率较低,通常建议使用 union 代替 or

select name, population, area from world where area >= 3000000
union
select name, population, area from world where population >= 25000000;

UNION 和 OR 之间的比较:

对于单列来说,用 or 是没有任何问题的,但是 or 涉及到多个列的时候,每次 select 只能选取一个index,如果选择了area,population就需要进行table-scan,即全部扫描一遍,但是使用union就可以解决这个问题,分别使用area和 population上面的index进行查询。 但是这里还会有一个问题就是,UNION会对结果进行排序去重,可能会降低一些 performance (这有可能是方法一比方法二快的原因),所以最佳的选择应该是两种方法都进行尝试比较

文章浏览I

🔒题目

题目来源:1148.文章浏览I

image-20230803153845276

🔑题解

可以选择直接使用 distinctauthor_id 进行去重

select distinct author_id as id 
from views 
where author_id = viewer_id 
order by id;

SQL优化:使用 group by 对 author_id 进行去重

select author_id as id 
from views 
where author_id = viewer_id 
group by author_id 
order by id;

image-20230803160609495

虽然它们都可以达到去重的效果,但在某些情况下,使用 GROUP BY 可能比使用 DISTINCT 更高效。

这主要是因为 GROUP BY 在进行聚合时,可以利用索引来提高查询性能。在 GROUP BY 操作中,数据库会将相同的值分组,并对每个组进行聚合计算。而在执行到 GROUP BY 时,数据库会使用索引来排序和分组数据。如果有适当的索引可用,那么数据库可以直接使用该索引而不需要完全扫描整个表。

另一方面,使用 DISTINCT 时,数据库需要扫描整个表来查找重复的数据并消除它们。虽然在一些情况下 DISTINCT可以利用索引优化,但它通常需要完全扫描数据,因此在数据量较大时可能会导致性能下降。

总的来说,当需要去重时,如果已经存在适当的索引,并且可以在 GROUP BY 条件下进行聚合操作,那么使用 GROUP BY 可能会更高效。但是在其他情况下,使用 DISTINCT 或者其他优化手段可能更合适。

注意:性能的比较也受到具体数据库实现、查询条件、数据量和索引等因素的影响,因此在实际应用中最好进行测试和评估以确定最佳的方法。

温馨提示:8.0之前的版本distinct的效率要比group by的去重效率高,因为group by会有隐式排序,8.0之后group by移除了隐式排序,所以8.0之后的版本,这两个效率近乎相当

无效的推文

🔒题目

题目来源:1638.无效的推文

image-20230803153909197

🔑题解

这里主要考察对length函数的使用

select tweet_id from tweets where length(content) > 15;

使用唯一标识码替代员工ID

🔒题目

题目来源:1638.无效的推文

image-20230803154032412

🔑题解

直接使用左接连,so easy

select tb2.unique_id, tb1.name
from Employees tb1 left join EmployeeUNI tb2 on tb1.id = tb2.id;

产品销售分析I

🔒题目

题目来源:1068.产品销售分析I

image-20230803161216022

🔑题解

  • 解法一:使用左(外)连接(left outer join ,简写 left join

    这里直接使用左连接,但是需要注意左连接的顺序,题目中要求是查询Sales表中所有的产品,所以要最先写Sales,这样才能保障查询的结果包含Sales表中所有的产品

    select p.product_name, s.price, s.year
    from Sales s left join Product p on s.product_id = p.product_id;
    
  • 解法二:使用内连接(inner join,简写join

    如果使用内连接,就不需要关注是先写Sales还是先写Product了。但是使用内连接

    select p.product_name, s.year, s.price 
    from Sales s
    join Product p on s.product_id = p.product_id 
    

    备注:在一般情况下,内连接(INNER JOIN)比左连接(LEFT JOIN)的性能更高。这是因为内连接只返回两个表中匹配的行,而左连接返回匹配的行以及左边表中不匹配的行。

进店却未进行交易的顾客

🔒题目

题目来源:1581.进店却未进行交易的顾客

image-20230803164815390

🔑题解

  • 解法一:使用左连接

    select v.customer_id, count(v.customer_id) count_no_trans
    from visits v left join transactions t on v.visit_id = t.visit_id
    where t.amount is null
    group by v.customer_id;
    
  • 解法二:使用 not in 子查询

    select customer_id, count(customer_id ) count_no_trans
    from visits
    where visit_id not in(
        select visit_id from transactions
    )
    group by customer_id;
    

上升的温度

🔒题目

题目来源:197.上升的温度

image-20230803170905903

🔑题解

  • 解法一:使用jonin+datediff

    datediff(date1, date2):计算 date1 与 date2 两个日期的间隔,结果为date1-date2

    select a.id
    from weather a join weather b
    where datediff(b.recordDate, a.recordDate) = 1 and b.Temperature > a.Temperature;
    
  • 解法二:使用jonin+adddate

    adddate(date1, interval n day):在 date1 的基础上添加 n天,这里的单位可以是 second、minute、hour、week

    select a.id
    from weather a join weather b on(a.recordDate = adddate(b.recordDate, interval 1 day))
    where a.temperature > b.temperature;
    

每台机器的进程平均运行时间

🔒题目

题目来源:1661.每台机器的进程平均运行时间

image-20230803172933426

🔑题解

这里涉及到三个知识点:rountavgif

rount(value, n):保留指定数值(value)的小数点后 n 位(四舍五入,不够补0)

avg(value):计算value的平均值

if(condition,exp1,exp2):条件成立执行epx1,条件不成立执行exp2,作用等价于三元算符

select machine_id, round(
    avg(if(activity_type='start', -timestamp, timestamp))*2, 3
    ) processing_time 
from Activity 
group by machine_id;

备注:由于 avg 计算的是所有行的平均值,而两行(start和end)才构成一个进程,因此 avg 计算得到的值乘 2 才是每个进程的平均值

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

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

相关文章

【计算机组成 课程笔记】7.3 高速缓存 Cache

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 7 - 5 - 705-高速缓存的工作原理(16-00--)_哔哩哔哩_bilibili 在【计算机组成 课程笔记】7.1 存储层次结构概况_Elaine_Bao的博客-CSDN博客中提到,因为CPU和内存的速度差距越来…

R语言12篇文章带您深入了解限制立方条图(Restricted cubic spline,RCS)

临床上,因变量和临床的结局有时候不是线性关系,而回归模型有一个重要的假设就是自变量和因变量呈线性关联,因此非线性关系模型用回归分析来拟合受到限制。因此,一个更好的解决方法是拟合自变量与因变量之间的非线性关系&#xff0…

SICP第三章 模块化,对象和状态

赋值和局部状态 我们可以用一个或几个状态变量刻画一个对象的状态,在他们之中维持有关这一对象的历史,即能够确定该对象当前行为的充分的信息 局部状态变量 过程 dispatch 以一个消息为输入,返回两个局部过程之一 引进赋值带来的利益

【Windows】Win11重置网络设置后WLAN消失

问题描述 Windows11重置网络设置后WLAN消失。 原因分析 WLAN相关服务未启动。 解决方案 Win r 打开运行 运行 services.msc 按名称排序,找到这两个服务 右键启动 右键打开属性,找到启动类型,改为自动 WLAN已找回

七、【套索工具组】

文章目录 套索工具多边形套索工具磁性套索工具 套索工具 如下图,以我们抠图为例,当我们选用套索工具选中一块区域后,然后按ShiftF5调出填充工具菜单,然后再选中内容识别,就可以去掉该区域: 那么如何做到加…

云盘文件批量分享脚本

前言 偶尔需要用就心血来潮做了下目前支持 百度网盘批量分享115网盘批量分享天翼云盘批量分享123盘批量分享(2023年10月05日新增)夸克网盘批量分享(2023年10月06日新增)蓝奏网盘批量分享(2023年10月06日新增)进度条展示复制到剪贴板下载分享链接分享信息自定义配置自定义提取码…

HDLbits: Edgedetect

module top_module (input clk,input [7:0] in,output [7:0] pedge );reg [7:0] in_old;always(posedge clk)beginin_old < in; end assign pedge < in & ~in_old; endmodule 对于边缘检测而言&#xff0c;若是0→1和1→0都检测则为in^in_old&#xf…

智能家电经营小程序商城的作用是什么

大小家电是人们生活所需&#xff0c;如冰箱、电脑、电视机、饮水机等&#xff0c;都有很高的市场需求度&#xff0c;传统人们购买往往是前往当地商场&#xff0c;而随着如今互联网电商深入&#xff0c;越来越多的用户选择线上消费&#xff0c;这也促进着传统家电经营商家需要转…

k8s-10 ingress-nginx 特性

TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二&#xff1a; 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景&#xff1a;版本的升级迭代&#xff0c;比如一个service 升级到另…

【Hello Algorithm】认识一些简单的递归

本篇博客介绍&#xff1a; 认识一些简单的递归 认识一些简单的递归 打印一个字符串全部的子序列打印一个字符串的全排列不申请额外的空间 逆序输出一个栈 我在刚刚学习C语言的时候写过一个汉诺塔问题 大家可以参考下我之前写的这篇博客 汉诺塔问题 其实这个问题也可以这么解决…

【RK3588】YOLO V5在瑞芯微板子上部署问题记录汇总

YOLO V5训练模型部署到瑞芯微的板子上面&#xff0c;官方是有给出案例和转过详情的。并且也提供了Python版本的推理代码&#xff0c;以及C语言的代码。 但是&#xff0c;对于转换过程中的细节&#xff0c;哪些需要改&#xff1f;怎么改&#xff1f;如何改&#xff0c;和为什么…

Altium Designer20.2.3安装详解

Altium Designer20.2.3是一个画PCB电路板的软件&#xff0c;今天有时间安装一下&#xff0c;接下来的一段时间就学习这个电路板的绘制了。特此记录下安装过程。 首先是下载软件&#xff0c;我直接放到我的网盘里面了。我把他分享出来吧&#xff01;希望能帮到更多的小伙伴&…

微信小程序开发缺少中间证书问题(腾讯云、阿里云等做服务器)

项目使用nginx做负载均衡后&#xff0c;不再采用原来直接用jar包的方式直接开启对应端口&#xff0c;所以需要重新从云服务器上下载证书&#xff0c;写入到Nginx读取的证书路径上即可。

SRTP协议与加密原理

1 SRTP简介 SRTP&#xff08;Secure Real-time Transport Protocol&#xff09;是一种用于保护实时通信数据的网络协议。它主要用于音频和视频通信&#xff0c;以确保数据的机密性和完整性。SRTP是在RTP&#xff08;Real-time Transport Protocol&#xff09;的基础上开发的&a…

基于安卓android微信小程序的旅游app系统

项目介绍 随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.自助定制游将使旅游相关信息管理工作规范化、信息化、程序化,提供旅游景点、旅游线路,旅游新闻等服务本…

【Verilog】采用采用模块结构建模,用1位全加器实现4位全加器详细步骤

题目要求&#xff1a; 采用模块结构建模&#xff0c;实例化四个1位全加器并连线&#xff0c;完成图示的四位全加器建模并编写四位全加器测试模块&#xff0c;在modelsim里执行&#xff0c;查看波形图。 首先&#xff0c;在工程区右键选择创建一个新文件去实现1位全加器的功能。…

图解AVL树的旋转操作

目录 AVL树的概念 AVL树结点的定义 AVL的插入 AVL树的旋转 左单旋 右单旋 左右双旋 右左双旋 AVL树的查找 AVL树的概念 二叉搜索树的缺点&#xff1a; 当构建二叉搜索树的数据有序或接近有序时二叉搜索树会退化为单链表。例如&#xff0c;当插入数据1&#xff0c;2&a…

Image resize, resample,rescale傻傻搞不懂看这里,大白话

Image resize, resample&#xff0c;rescale傻傻搞不懂 大白话 大家好&#xff0c;在学习图像处理的时候我们可能都对rescale&#xff0c;resize&#xff0c;resample感到困惑&#xff0c;在这里让我们进行学习一下。首先让我们现了解一下他们的大白话。resize就是改变大小&am…

项目部署之Jenkins

1. Jenkins介绍 Jenkins 是一款流行的开源持续集成&#xff08;Continuous Integration&#xff09;工具&#xff0c;广泛用于项目开发&#xff0c;具有自动化构建、测试和部署等功能。官网&#xff1a; http://jenkins-ci.org/。 Jenkins的特征&#xff1a; 开源的 Java语言…

ELF 文件介绍

前言 如果需要了解 动态加载,需要先了解需要动态加载的目标(对象):ELF 文件 ELF 文件用于 Linux、Unix等系统平台,与 Windows 上的 exe (PE)或者 DLL 文件格式不一样 ELF 简介 全称:Executable and Linking Format 中文:可执行和链接格式 ELF 文件格式是 Linux/Unix 通…