窗口函数OLAP
(MySQL8.0以后的版本才支持)
可以对数据库数据进行实时分析处理
1.语法:窗口函数 over (partition by 用于分组的字段名 order by 用于排序的字段名)
2.窗口函数的位置,可以放以下两种函数:
①专用窗口函数,比如rank, dense_rank, row_number等
②聚合函数,如sum. avg, count, max, min等
3.窗口函数的功能:
①时具有分组(partition by)和排序(order by)的功能
②减少原表的行数,所以经常用来在每组内排名
注意:窗口函数原则上只能写在select子句中
4.窗口函数使用场景:业务需求“在每组内排名”
窗口函数rank()over(…)是在指定分区(partition by)对指定字段排序(order by),然后依次赋予排名的函数
常用窗口函数:
函数名 | 参数 | 描述 |
---|---|---|
rank() | 无 | 这种排序允许并列,并且保留空缺,两个第一名,没有第二名,排名1,1,3 |
dense_rank() | 无 | 这种排序允许并列,但不留空,两个第一名,接下来就是第二名,排名1,1,2 |