Oracle 分析函数

分析函数:

  统计分析函数:

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的统计)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容