当前位置:   article > 正文

MySql8.0窗口函数_mysql window()

mysql window()

一、基本概念

MySQL从8.0开始支持窗口函数,这个功能在大多商业数据库和部分开源数据库中早已支持,有的也叫分析函数。

概念:

窗口的概念可以理解为记录集合;窗口函数也就是在满足某种条件的记录集合上执行的特殊函数,对于每条记录都要在此窗口内执行函数,有的函数随着记录不同,窗口大小都是固定的,这种是静态窗口;有的函数则是不同的记录对应着不同的窗口,这种动态变化的窗口叫滑动窗口。

窗口函数与聚合函数
  1. 聚合函数是将多条记录聚合为一条;
  2. 窗口函数是每条记录都会执行,有几条记录执行完还是几条;
  3. 聚合函数也可以用于窗口函数。

二、基本格式

基本语法:<窗口函数> over (子句)
  • <窗口函数>的位置可以放专用窗口函数(rank(),percent_rank(),dense_rank()等),或者放聚合函数(sum(),avg(),max()等)。

  • 窗口函数是对where或group by子句处理后的结果进行操作,故其原则上只写于SELECT子句中。

  • over 用来指定函数执行的窗口范围,若子句为空,则意味着窗口包含满足WHERE条件的所有行,窗口函数基于所有行进行计算。

  • 若子句非空,则支持以下4中语法来设置窗口:

    window_name:给窗口指定一个别名,如果SQL中涉及的窗口较多,采用别名可以看起来更清晰易读。

    SELECT
    	`姓名`,
    	`班级`,
    	`人气`,
    	rank() over w1 AS rak
    FROM
    	`民工漫班级` window w1 AS ( PARTITION BY `班级` ORDER BY `人气` DESC );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    ​ 结果:
        在这里插入图片描述

    partition子句:窗口按照那些字段进行分组,窗口函数在不同的分组上分别执行。

    order by子句:按照哪些字段进行排序,窗口函数将按照排序后的记录顺序进行编号。

    ​ frame子句:frame是当前分区的一个子集,子句用来定义子集的规则,通常用来作为滑动窗口使用。(本文暂不介绍)

    ​ 用于操作示例新建的民工漫班级表:

        在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/702207
推荐阅读
相关标签
  

闽ICP备14008679号