窗口可以理解为规定的大小范围,窗口函数即对特定范围类的数据进行应用
窗口函数结构 :
函数名() over(partition by 字段名 order by 字段名 rows between [start] and [end])
start 表示窗口的上边界 end表示窗口的下边界 类型如下:
unbounded preceding 前面所有行
unbounded following 后面所有行
current row 当前行
n following 后面n行
n preceding 前面n行
常用的窗口函数
统计函数
- sum(),
- max(),
- min()
排序函数
- row_number() [排序:1,2,3]
- rank() [排序:1,1,3]
- dense_rank() [排序;1,1,2]
分布函数
- percent_rank() [(rank-1)/(rows-1)]
- cume_dist () [<=当前rank值的行数/总行数]
前后函数
- lag(expr,n) [返回当前行的前n行的值]
- lead(expr,n) [返回当前行的后n行的值]
头尾函数
- first_value(expr) [返回第一个expr值]
- last_value(expr) [返回最后一个expr值]
其他函数
- nth_value(expr,n) [返回第n个expr的值]
- ntile(n) [将有序数据分成n等,记录登记数]