SQL窗口函数-MySQL-leetcode刷数据库题目必备知识
目录
背景:
窗口函数的介绍:
窗口函数的应用场景:
支持窗口函数的查询元素:
窗口函数的案例博客链接:
背景:
在leetcode刷数据库题目时,凡是中等难度及困难难度的题目必涉及到SQL窗口函数的应用。参考网上的相关知识,SQL窗口函数的内容点总结一下。数据库采用的是MySQL数据库。
窗口函数的介绍:
窗口函数作用于一个数据行集合。窗口是标准的SQL术语,用来描述SQL语句内OVER子句划定的内容,这个内容就是窗口函数的作用域。而在OVER子句中,定义了窗口所覆盖的与当前行相关的数据行集、行的排序及其他的相关元素。
标准SQL对窗口函数的第一次支持是在SQL:1999的扩展文档中,当时,它们称为“OLAP”函数。从那以后,每次标准版本的修订都会增强对窗口函数的支持,直到现在的SQL:2003、SQL:2008、SQL:2011。最新的SQL标准版本,已经有了非常丰富和全面的窗口函数,显示出标准委员会对这一概念的坚定,以及从更多窗口函数和更多功能两个方面持续增强支持标准。
窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。
窗口函数的基本语法如下:
<窗口函数> over (partition by <用于分组的列名>order by <用于排序的列名>)
那么语法中的<窗口函数>都有哪些呢?
<窗口函数>的位置,可以分为以下两种函数:
1) 专用窗口函数,包括后面要讲到的rank, dense_rank, row_number等专用窗口函数。
2) 聚合函数,如sum. avg, count, max, min等
因为窗口函数是对where或者group by子句处理后的结果进行操作,所以窗口函数原则上只能写在select子句中。
窗口函数的应用场景:
1)排名问题:每个部门按业绩来排名
2)top N问题:找出每个部门排名前N的员工进行奖励
支持窗口函数的查询元素:
并不是所有的查询子句都支持窗口函数,相反,仅仅SELECT和ORDER BY 子句支持窗口函数。为帮助理解,我们先看看SQL不同子句的执行顺序:
1、FROM
2、WHERE
3、GROUP BY
4、HAVING
5、SELECT
5.1、Evalute Expressions(判断表达式)
5.2、删除重复数据
6、ORDER BY
7、OFFSET-FETCH/TOP
只有SELECT和ORDER BY 子句直接支持窗口函数。做这个限制的原因是为了避免二义性,因此把(几乎是)查询的最终结果当作窗口的起点。如果窗口函数可以早于SELECT阶段出现,那么通过一些查询表单会无法得到正确的结果。
窗口函数的案例博客链接:
1、https://blog.csdn.net/weixin_36602742/article/details/109963920
参考博客链接:
1、https://blog.csdn.net/mzl87/article/details/84455076#%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0%E7%9A%84%E6%8F%8F%E8%BF%B0
2、https://blog.csdn.net/william_n/article/details/103236086
SQL窗口函数-MySQL-leetcode刷数据库题目必备知识相关推荐
- Mysql场景刷数据库脚本方法和顺序
新建环境 脚本可以按如下几步按顺序在数据库中执行. CreateUser.sql 该文件中放创建用户,创建数据库,将数据库的执行权限赋给用户的相关语句. 举例如下: CreateTable.sql 该 ...
- MySQL - SQL窗口函数
1.应用场景 窗口函数解决的问题包括: 1)排名问题 2)top N问题 应用工作中, 面试中. 2.学习/操作 前言 MySQL版本8已支持窗口函数这个功能, 如果低于该版本, 会出现SQL报错! ...
- 使用Shell对MySQL指定的库进行SQL语句批量插入操作
需求: 某环境MySQL数据库中有1000个以yz_xxx开头命名的库,要求:在所有以yz_xxx开头命名的库中插入指定的SQL语句. 解决一: 使用Navicat Mysql工具连接到MyS ...
- MySQL从删库到跑路(2):大爷的SQL私房菜
大爷的SQL私房菜 夜色如墨,月凉如水,一轮皎洁的圆月高高地挂在夜空之上,平日里鼾声如雷的室友今夜也停止了打鼾,如此静谧的夜晚,李有为却辗转难眠. 时间悄然来到凌晨一点半,他已经在窗边站了53分钟23 ...
- 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL
19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/ja ...
- MySQL从删库到跑路(5):in and not
"哈哈哈哈,看你这几天没来上课,我还以为你去拜什么高人为师了?原来就是这个烂番薯.臭鸟蛋的小卖部大爷学装逼,你逗我玩呢?哈哈哈哈哈" "哈哈哈哈,一个老屌丝,一个小屌 ...
- 小记mysql备份同库中一张表的历史记录
mysql备份同库中一张表的历史记录 insert into -select 需求 如今有个这么一个需求.mysql中有个表.数据增长的非常快.可是呢这个数据有效期也就是1个月,一个月曾经的记录不太重 ...
- LeetCode题库第888题 公平的糖果棒交换
LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...
- LeetCode题库第2题 两数相加
两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...
最新文章
- 100题_22 整数的二进制表示中1的个数
- 通过rsync清除目录的shell脚本
- Struts2--DomainModel接收参数---使用广泛!!!
- git github的使用
- ethereumjs/ethereumjs-common-3-test
- java 显示透明背景png图片
- 怎么修改RO服务器版本,谁知道build.prop的系统版本号怎么改
- 黄章爆料魅族16s/16s Plus更多信息 无线充电已做到24W
- (17/24) webpack实战技巧:生产环境和开发环境并行设置,实现来回切换
- itest听力答案2020_itest大学英语测试答案2019
- Linux内核kconfig调用关系,探索Linux内核:Kconfig的秘密
- 二元二次方程例题_2元1次方程100道题 七年级数学下册二元二次方程组100道计算题及答案!......
- C#计算一年有多少周
- 手机怎么扫描照片成电子版?手把手教你快速搞定
- for循环基础练习学案:打印平行四边形
- BIM+GIS技术突破!百公里公路设计数据+TB级地形模型不再是难题!
- 【一问一答】错题库整理
- CSS的世界(十四)
- 思科德Exynos4412(2G内存)四核平板电脑方案
- android点击按钮静音,android 实现一键静音功能