目录

背景:

窗口函数的介绍:

窗口函数的应用场景:

支持窗口函数的查询元素:

窗口函数的案例博客链接:



背景:

在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刷数据库题目必备知识相关推荐

  1. Mysql场景刷数据库脚本方法和顺序

    新建环境 脚本可以按如下几步按顺序在数据库中执行. CreateUser.sql 该文件中放创建用户,创建数据库,将数据库的执行权限赋给用户的相关语句. 举例如下: CreateTable.sql 该 ...

  2. MySQL - SQL窗口函数

    1.应用场景 窗口函数解决的问题包括: 1)排名问题 2)top N问题 应用工作中, 面试中. 2.学习/操作 前言 MySQL版本8已支持窗口函数这个功能, 如果低于该版本, 会出现SQL报错! ...

  3. 使用Shell对MySQL指定的库进行SQL语句批量插入操作

    需求:   某环境MySQL数据库中有1000个以yz_xxx开头命名的库,要求:在所有以yz_xxx开头命名的库中插入指定的SQL语句. 解决一:   使用Navicat Mysql工具连接到MyS ...

  4. MySQL从删库到跑路(2):大爷的SQL私房菜

    大爷的SQL私房菜 夜色如墨,月凉如水,一轮皎洁的圆月高高地挂在夜空之上,平日里鼾声如雷的室友今夜也停止了打鼾,如此静谧的夜晚,李有为却辗转难眠. 时间悄然来到凌晨一点半,他已经在窗边站了53分钟23 ...

  5. 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL

    19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/ja ...

  6. MySQL从删库到跑路(5):in and not

     "哈哈哈哈,看你这几天没来上课,我还以为你去拜什么高人为师了?原来就是这个烂番薯.臭鸟蛋的小卖部大爷学装逼,你逗我玩呢?哈哈哈哈哈"  "哈哈哈哈,一个老屌丝,一个小屌 ...

  7. 小记mysql备份同库中一张表的历史记录

    mysql备份同库中一张表的历史记录 insert into -select 需求 如今有个这么一个需求.mysql中有个表.数据增长的非常快.可是呢这个数据有效期也就是1个月,一个月曾经的记录不太重 ...

  8. LeetCode题库第888题 公平的糖果棒交换

    LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...

  9. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

最新文章

  1. 100题_22 整数的二进制表示中1的个数
  2. 通过rsync清除目录的shell脚本
  3. Struts2--DomainModel接收参数---使用广泛!!!
  4. git github的使用
  5. ethereumjs/ethereumjs-common-3-test
  6. java 显示透明背景png图片
  7. 怎么修改RO服务器版本,谁知道build.prop的系统版本号怎么改
  8. 黄章爆料魅族16s/16s Plus更多信息 无线充电已做到24W
  9. (17/24) webpack实战技巧:生产环境和开发环境并行设置,实现来回切换
  10. itest听力答案2020_itest大学英语测试答案2019
  11. Linux内核kconfig调用关系,探索Linux内核:Kconfig的秘密
  12. 二元二次方程例题_2元1次方程100道题 七年级数学下册二元二次方程组100道计算题及答案!......
  13. C#计算一年有多少周
  14. 手机怎么扫描照片成电子版?手把手教你快速搞定
  15. for循环基础练习学案:打印平行四边形
  16. BIM+GIS技术突破!百公里公路设计数据+TB级地形模型不再是难题!
  17. 【一问一答】错题库整理
  18. CSS的世界(十四)
  19. 思科德Exynos4412(2G内存)四核平板电脑方案
  20. android点击按钮静音,android 实现一键静音功能

热门文章

  1. 注册功能之手机验证与邮箱验证
  2. html5 canvas绘制树叶,使用HTML5 Canvas绘制毕达哥拉斯树
  3. Scratch编程与数学之神奇的分型图-勾股树!
  4. CSS 3 基础知识(二)
  5. JFreeChart用法示例
  6. 悬赏任务小程序源码有什么功能?
  7. Metro UI CSS 学习笔记之 基础组件
  8. 10大流行的 Metro UI 风格的 Bootstrap 主题和模板
  9. Zabbix端口监控
  10. 2023天津医科大学心内科专硕经验