mysql从8.0开始支持窗口函数
什么是窗口?
可以理解为记录集合,窗口函数就是在满足某种提交的记录集合上执行的特殊函数,按照功能划分,可以把mysql支持的窗口函数分为如下几类:
名称 | 方法 |
序号函数 | row_number() / rank()/dense_rank() 主要解决排序/排名 |
分布函数 | percent_rank() /cume_dist() |
前后函数 | lag() /lead() |
头尾函数 | first_val() /last_val() |
其他函数 | nth_value() /nfile() |
窗口函数基本用法如下
函数名([expr]) over 字句
over是关键字,用来指定函数执行的窗口范围
-- 知识点 row_number() ,rank() ,dense_rank()区别
假如 a=100,b=95,c=95,d=90,e=90,f=60
-- (1) row_number:依次排序,不会出现相同排名
a1 , b2 , c3 , d4 , e5 , f6
-- (2) rank():出现相同的排名时,跳跃排序
a1 , b2 , c2 , d4 , e4 , f6
-- (3) dense_rank():出现相同排序时,连续排序
a1 , b2 , c2 , d3 , e3 , f4