【SQL】王二的100道SQL刷题进阶之路

持续更新,建议关注收藏!


SQL进阶看这一篇就够了!

目录

  • 1-datediff
  • 2-生成排序序号
  • 3-having注意
  • 4-procedure + declare
  • 5-弯弯绕绕

1-datediff

select id,datediff(end_date, start_date) as diff
from Tasks
order by diff desc
limit 3;
  • datediff(date1,date2) 调用函数来运算时间差
    参数类型为date

2-生成排序序号

SELECT row_number() over() as score_rank, sno, (course1 + course2 + course3) as total_score
from score
order by total_score desc,sno
limit 1,4 #limit start从0开始
  • ROW_NUMBER() 是一种窗口函数,用来根据查询的顺序为每一行分配一个唯一的序号(行号)。行号是从 1 开始递增的,默认情况下,行号是按照查询结果的顺序来分配的。
  • OVER() 子句定义了窗口的范围。窗口可以是整个结果集,也可以按某些条件进行分组或排序。如果没有提供任何 ORDER BY,那么 ROW_NUMBER() 将根据查询返回的原始顺序分配行号。
ROW_NUMBER() OVER (ORDER BY score DESC) AS score_rank
--ROW_NUMBER() 配合 ORDER BY 使用,可以根据某个列的排序顺序来分配行号

3-having注意

select course_id from courses group by course_id
having count(distinct student_id)=(select count(distinct student_id)from courses)
order by course_id
  • HAVING (DISTINCT student_id) = (SELECT DISTINCT student_id FROM courses);或HAVING (DISTINCT student_id) in (SELECT DISTINCT student_id FROM courses);都是错误的
    HAVING 中不可以使用 DISTINCT:
    HAVING 子句用于在 GROUP BY 后过滤数据,它期望一个 布尔表达式,通常涉及聚合函数(比如 COUNT、SUM、AVG 等)。
    DISTINCT 关键字一般用于 SELECT 语句中,用来选择唯一值,或者在聚合函数中使用来去重,但不能在 HAVING 中直接使用 DISTINCT 来对单列进行过滤。

4-procedure + declare

create procedure GetTotalTeacher ()
begindeclare totalTeacher int default 0;select count(*) into totalTeacher from teachers;select totalTeacher;
end
  • CREATE PROCEDURE GetTotalTeacher():
    这是存储过程的定义语法,GetTotalTeacher 是存储过程的名字,括号中的内容可以包含输入参数(在这个例子中没有任何参数)
    一旦存储过程被创建,你可以使用 CALL 来调用存储过程并获取结果。
    CALL GetTotalTeacher();调用存储过程后,它将返回 teachers 表中的教师数量。
  • DECLARE 用于在存储过程中声明局部变量。在这里,totalTeacher 变量被声明为 INT 类型,初始值为 0。
  • SELECT INTO 用于将查询结果存入变量。这里使用 SELECT COUNT(*) INTO totalTeacher FROM teachers 来查询 teachers 表中的记录总数并将其存入 totalTeacher 变量。
  • 通过 SELECT 来返回存储在 totalTeacher 变量中的值,这样你可以看到查询结果。

5-弯弯绕绕

按班级显示出各班级中全科过线的人数

select class,count(*) pass_count from students stu
inner join score sc on stu.sno=sc.sno
where course1>=60 and course2>=60 and course3>=60 
group by class

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

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

相关文章

3.系统学习-熵与决策树

熵与决策树 前言1.从数学开始信息量(Information Content / Shannon information)信息熵(Information Entropy)条件熵信息增益 决策树认识2.基于信息增益的ID3决策树3.C4.5决策树算法C4.5决策树算法的介绍决策树C4.5算法的不足与思考 4. CART 树基尼指数(基尼不纯度…

FLV视频封装格式详解

目录(?)[-] OverviewFile Structure The FLV headerThe FLV File BodyFLV Tag Definition FLVTAGAudio TagsVideo TagsSCRIPTDATA onMetaDatakeyframes Overview Flash Video(简称FLV),是一种流行的网络格式。目前国内外大部分视频分享网站都是采用的这种格式. File Structure…

Text2Reward学习笔记

1. 提示词 请问,“glew”是一个RL工程师常用的工具库吗?2. 环境配置 2.1 安装 PyTorch-1.13.1 pip install torch1.13.1cu116 torchvision0.14.1cu116 \ torchaudio0.13.1 --extra-index-url https://download.pytorch.org/whl/cu1161.2 安装工具库 …

SpringBoot + HttpSession 自定义生成sessionId

SpringBoot HttpSession 自定义生成sessionId 业务场景实现方案 业务场景 最近在做用户登录过程中,由于默认ID是通过UUID创建的,缺乏足够的安全性,决定要自定义生成 sessionId。 实现方案 正常的获取session方法如下: HttpSe…

破解海外业务困局:新加坡服务器托管与跨境组网策略

在当今全球化商业蓬勃发展的浪潮之下,众多企业将目光投向海外市场,力求拓展业务版图、抢占发展先机。而新加坡,凭借其卓越的地理位置、强劲的经济发展态势以及高度国际化的营商环境,已然成为企业海外布局的热门之选。此时&#xf…

CMS(Concurrent Mark Sweep)垃圾回收器的具体流程

引言 CMS(Concurrent Mark Sweep)收集器是Java虚拟机中的一款并发收集器,其设计目标是最小化停顿时间,非常适合于对响应时间敏感的应用。与传统的串行或并行收集器不同,CMS能够尽可能地让垃圾收集线程与用户线程同时运…

数学课程评价系统:客户服务与教学支持

2.1 SSM框架介绍 本课题程序开发使用到的框架技术,英文名称缩写是SSM,在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等,作为一个课题程序采用SSH框架也可以,SSM框架也可以,SpringMVC也可以。SSH框架是属于重量级…

攻防世界web第三题file_include

<?php highlight_file(__FILE__);include("./check.php");if(isset($_GET[filename])){$filename $_GET[filename];include($filename);} ?>惯例&#xff1a; 代码审查&#xff1a; 1.可以看到include(“./check.php”);猜测是同级目录下有一个check.php文…

C++设计模式:解释器模式(简单的数学表达式解析器)

什么是解释器模式&#xff1f; 解释器模式是一种行为型设计模式&#xff0c;用于为特定的语言定义一个解释器&#xff0c;解释并执行语言中的句子。它主要用于构建一个简单的语法解释器&#xff0c;将特定的业务逻辑转化为可理解的语言表达&#xff0c;并对这些表达式进行求值…

【深度学习环境】NVIDIA Driver、Cuda和Pytorch(centos9机器,要用到显示器)

文章目录 一 、Anaconda install二、 NIVIDIA driver install三、 Cuda install四、Pytorch install 一 、Anaconda install Step 1 Go to the official website: https://www.anaconda.com/download Input your email and submit. Step 2 Select your version, and click i…

寻找适合小户型的开源知识库open source knowledge base之路

寻找一个开源的知识库&#xff0c;为了把以前花很多时间收集的信息或是项目/课程资料放到一个容易归类和管理的私有自主系统中&#xff0c;以便更容易查阅&#xff0c;花更少时间收集、对比版本及分享等一系列管理工作&#xff0c;同时确保在需要时可以相对快速找到有用的资料&…

C语言勘破之路-最终篇 —— 预处理(上)

人无完人&#xff0c;持之以恒&#xff0c;方能见真我&#xff01;&#xff01;&#xff01; 共同进步&#xff01;&#xff01; 文章目录 一、预定义符号二、#define定义常量三.、#define定义宏四、带有副作用的宏参数五、宏替换的规则六、宏和函数的对比1.宏的优势2.函数的优…

学习threejs,THREE.RingGeometry 二维平面圆环几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.RingGeometry 圆环几…

Win11系统下Oracle11g数据库下载与安装使用教程

文章目录 一、Oracle下载与安装1.1 解压安装包1.2 开始安装Oracle11g1.2.1 用户 1.3 测试数据库是否配置成功1.4 了解一下 Oracle相关服务1.5 了解Oracle体系结构 二、使用工具连接数据库2.1 PL/ SQL 连接本地oracle 三、PL/ SQL远程访问数据库3.1 可能踩坑问题&#xff08;TNS…

数据结构(Java版)第六期:LinkedList与链表(一)

目录 一、链表 1.1. 链表的概念及结构 1.2. 链表的实现 专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 一、链表 1.1. 链表的概念及结构 链表是⼀种物理存储结构上⾮连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引⽤链接次序实现的。与火车…

从零开始C++棋牌游戏开发之第三篇:游戏的界面布局设计

在游戏开发的旅途中&#xff0c;界面布局设计是一个充满创意和挑战的环节。对于棋牌类游戏而言&#xff0c;界面不仅仅是功能的载体&#xff0c;更是玩家与游戏互动的桥梁。一个清晰、直观且美观的界面可以显著提升游戏的用户体验。 在这篇文章中&#xff0c;我们将从功能需求…

计算机基础知识——数据结构与算法(五)(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据结构与算法…

使用 Python 为 PDF 添加水印

概述 安装所需库创建水印 PDF将水印应用到你的 PDF 1. 安装所需库 首先&#xff0c;确保你的系统上安装了 Python。然后&#xff0c;使用 pip 安装必要的库&#xff1a; pip install PyPDF2 reportlabPyPDF2&#xff1a;一个用于读取和操作 PDF 文件的库。reportlab&#x…

数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)

数据库管理275期 2024-12-25 数据库管理-第275期 Oracle 23ai&#xff1a;画了两张架构图&#xff08;20241225&#xff09;1 系统管理分片2 用户定义分片总结 数据库管理-第275期 Oracle 23ai&#xff1a;画了两张架构图&#xff08;20241225&#xff09; 作者&#xff1a;胖…

C++ 面向对象编程

面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;是C语言的一个重要特性&#xff0c;它允许开发者以更直观和模块化的方式来设计和构建程序。OOP的四个主要原则是&#xff1a;封装&#xff08;Encapsulation&#xff09;、继承&#xff08;Inheritance&a…