聚合开窗
SUM(), MIN(),MAX(),AVG()等聚合函数
排序开窗
语法如下:
R() over (partion by col1... order by col2... desc/asc)
select
class1,
score,
rank() over(partition by class1 order by score desc) rk1,
dense_rank() over(partition by class1 order by score desc) rk2,
row_number() over(partition by class1 order by score desc) rk3
from zyy_test1;
SQL Result:
结论:
- rank 会对相同数值,输出相同的序号,而且下一个序号不间断;
- dense_rank 会对相同数值,输出相同的序号,但下一个序号,间断
- row_number 会对所有数值输出不同的序号,序号唯一连续;
其他窗口函数
Lag, Lead, First_value,Last_value
语法
LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值, 与LAG相反
-- 组内排序后,向后或向前偏移-- 如果省略掉第三个参数,默认为NULL,否则补上。
select
dp_id,
mt,
payment,
LAG(mt,2) over(partition by dp_id order by mt) mt_new
from test2;