窗口函数是一种不需要使用group by也能进行聚合计算的强大分析函数
以下是经过自己使用的一些感悟:
1),窗口函数不是某个函数,它是 “一批” 的函数的总称
2),窗口函数适用于增量写入的计算场景
3),窗口函数适用于“组内排名”的计算场景
4),窗口函数可用于非null判断的循环查找场景
…
常用的窗口函数简介:
1)、窗口聚合计算函数
sum(col) over() : 分组对col累计求和,
count(col) over() : 分组对col累计,
min(col) over() : 分组对col求最小
max(col) over() : 分组求col的最大值
avg(col) over() : 分组求col列的平均值
first_value(col) over() : 某分区排序后的第一个col值
last_value(col) over() : 某分区排序后的最后一个col值
2)、窗口排名函数
row_number() over() : 排名函数,排名不会重复,一直连续,如1,2,3,4
rank() over() : 排名函数,有并列名次,名次不连续。如:1 ,1 , 3
dense_rank() over() : 排名函数,有并列名次,名次连续。如:1,1,2
干货:
窗口函数具体使用场景
row_number() over()
排名函数中row_number用的较多,
场景1:组内排名