语法:
分析函数 over(partition by 分组列 order by 排序列 rows between 开始位置 and 结束位置)
常用分析函数:
-
聚合类
avg()、sum()、max()、min() -
排名类
row_number() 按照值排序时产生一个自增编号,不会重复
rank() 按照值排序时产生一个自增编号,值相等时会重复,会产生空位
dense_rank() 按照值排序时产生一个自增编号,值相等时会重复,不会产生空位 -
其他类
lag(列名,往前的行数,[行数为null时的默认值,不指定为null])
lead(列名,往后的行数,[行数为null时的默认值,不指定为null])
ntile(n) 把有序分区中的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,ntile返回此行所属的组的编号 -
注意点:
- over()函数中的分区、排序、指定窗口范围,可组合使用也可以不指定,根据不同的业务场景需求结合使用
- over()函数中如果不指定分区,窗口大小默认针对查询产生的所有数据,如果指定了分区,窗口大小针对每个分区的数据
- over()函数中的窗口范围说明:
current row:当前行<