分析函数:
统计分析函数:
sum/max/min/avg/count/(字段) over (partition by 分组字段 order by 排序字段);
排名分析函数:(排序字段必填,对排序字段进行排名)
rank() over(partition by 分组字段 order by 排序字段); 【相同数据的排名一样(并把相同数据的排名空开)】1223
dense_rank() over(partition by 分组字段 order by 排序字段); 【相同数据的排名一样,其它顺序依次递增】1224
row_number() over(partition by 分组字段 order by 排序字段); 【顺序依次递增】1234
偏移量分析函数(行选择分析函数):(排序字段必填)
lag(arg1,[arg2,arg3]):取出同一字段的前N行的数据,arg1是要查找的字段,arg2是偏移量缺省为1,arg3默认值缺省为null;
lead(arg1,[arg2,arg3]):取出同一字段的后N行的数据,参数同上;
first_value(arg):查找第一行;
last_value(arg):查找最后一行,指定windowing_clause为rows between unbounded preceding and unbounded following。
WINDOWING子句:
-- RANGE UNBOUNDED PRECEDING (默认从第一行扫描到当前行)
--【 unbounded preceding 第一行 current row 当前行 unbounded following最后一行 】
【rows】
-- rows between unbounded preceding and unbounded following (从第一行扫描到最后一行)
-- rows between current row and unbounded following (当前行扫描最后一行)
-- rows between unbounded preceding and current row (从第一行扫描到当前行)
-- rows between 1 preceding and 2 following (前一行+当前行+后两行)
【range】
-- range between unbounded preceding and unbounded following (大于、小于、等于当前行值的统计)
-- range between current row and unbounded following (大于、等于当前行值的统计)
-- range between unbounded preceding and current row (小于、等于当前行值的统计)
-- range between 1000 preceding and 2000 following (大于当前行值-1000、小于当前行值+2000的统计)