登录
首页精彩阅读窗口函数中三种序号函数怎么区分?
窗口函数中三种序号函数怎么区分?
2023-06-08
收藏

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


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


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


窗口函数总体上可以分为序号函数, 分布函数, 前后函数, 首尾函数和其他函数;


在数据分析中,经常要进行排序,排名的操作,mysql 8.0中新增的窗口函数提供了专门用于此需求的窗口函数


row_number()、rank()、dense_rank()。很多初学者不太容易区分。以下提供一个易记的思路:


(1)row_number( )从字面意思理解,为行号,所以排出来是从1到N的等差数列。


(2)rank( )根据开窗函数中order by的排序要求(升序或降序),对结果进行排序,如果有并列排名,则后面会跳档下一名次。


(3)dense_rank( )根据开窗函数中order by的排序要求(升序或降序),对结果进行排序,无论是否有并列排名,后面都会继续排名,名次不会跳档。



数据分析咨询请扫描二维码

客服在线
立即咨询