overview
分析函数:计算基于组的某种聚合值,区别与聚合函数是返回分组的多行值,over (partition by…) 分组查询
row_number() over (partition by…order by…)
row_number() 给SELECT结果赋连续的编号;实质就是给分组查询结果加上编号
rank()/desen_rank() over (partition by…order by…)
rank() 按分组跳跃排序,desen_rank() 反之
max()/min()/sum()/avg() over (partition by…order by…)
按照分组得出聚合函数结果
first_value(…)/last_value(…) over (partition by…order by…)
SELECT first_value(c3) OVER(PARTITION BY c1 ORDER BY c2) FROM TABLE
按照分组查询结果取出其他字段的第一或最后一行的值
lag()/lead() over (partition by…order by…)
SELECT first_value(c3,n) OVER(PARTITION BY c1 ORDER BY c2) FROM TABLE
按照分组查询结果取出其他字段的前n或后n行的值