MySQL 窗口函数

MySQL 窗口函数

一、简介

MysQL从8.o版本开始支持窗口函数。窗口函数的作用类似于在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是将结果置于每一条数据记录中。

二、分类

窗口函数可以分为静态窗口函数和动态窗口函数。

  • 静态窗口函数的窗口大小是固定的,不会因为记录的不同而不同;
  • 动态窗口函数的窗口大小会随着记录的不同而变化。

窗口函数总体上可以分为序号函数分布函数前后函数首尾函数其他函数,如下表:
MySQL 窗口函数_第1张图片

三、语法结构

MySQL 窗口函数_第2张图片

四、分类讲解

(一)序号函数

实例:

MySQL 窗口函数_第3张图片

MySQL 窗口函数_第4张图片

rank()函数

MySQL 窗口函数_第5张图片

dense_rank()函数

MySQL 窗口函数_第6张图片

(二)分布函数

MySQL 窗口函数_第7张图片

MySQL 窗口函数_第8张图片

cume_dist()函数

CUME_DIST()函数主要用于查询小于或等于某个值的比例。

MySQL 窗口函数_第9张图片

(三)前后函数

lag(expr,n)函数

MySQL 窗口函数_第10张图片

lead(expr,n)函数

LEAD(expr,n)函数返回当前行的后n行的expr的值。

MySQL 窗口函数_第11张图片

(四)首尾函数

first_value(expr)函数

FIRST_VALUE(expr)函数返回第一个expr的值。

MySQL 窗口函数_第12张图片

last_value(expr)函数

(五)其他函数

nth_value(expr,n)函数

NTH_VALUE(expr,n)函数返回第n个expr的值。

MySQL 窗口函数_第13张图片

ntile(n)函数

NTILE(n)函数将分区中的有序数据分为n个桶,记录桶编号。

MySQL 窗口函数_第14张图片

MySQL 窗口函数_第15张图片

五、总结

窗口函数的特点是可以分组,而且可以在分组内排序。另外,窗口函数不会因为分组而减少原表中的行数,这对我们在原表数据的基础上进行统计和排序非常有用。

关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。

你可能感兴趣的:(MySQL笔记,mysql,数据库,后端)