1.3 分析函数的使用
1.3.1 分析函数概览
我们浏览下所有的分析函数,其中带(*)的表示可以带window子句。其中黄色的表示常用分析函数。
--可以带window的
AVG *
CORR *
COVAR_POP *
COVAR_SAMP *
COUNT *
FIRST_VALUE *
LAST_VALUE *
MAX *
MIN *
REGR(Linear Regressions) Functions *
STDDEV *
STDDEV_POP *
STDDEV_SAMP *
SUM *
VAR_POP *
VAR_SAMP *
VARIANCE *
--不可以带window的
CUME_DIST
DENSE_RANK
FIRST
LAST
LAG
LEAD
NTILE
PERCENT_RANK
PERCENTILE_COUNT
PERCENTILE_DISC
RANK
ROW_NUMBER
RATIO_TO_REPORT
常用分析函数使用说明
分析函数可以分为四类:排名函数,聚合函数,行比较函数,统计函数。
很多分析函数也可以当作聚合函数使用,这里我们只讨论当作分析函数的使用方法,聚合函数可以参考oracle sql指南,这里不另作说明。另外oracle还支持user-defined aggregate function,可以使用分析函数的语法,这样可以自定义扩展分析函数的功能,本章也会讨论如何写子句的分析函数。
1.3.2排名函数(Ranking)
排名函数包括ROW_NUMBER, RANK ,DENSE_RANK, PERCENT_RANK, CUME_DIST和NTILE。(常用的是黄色标志的),排名函数的最大用途就是做TOP-N分析和BOTTOM-N分析,常用于分页查询,当然row_number伪列也类似。
1.3.2.1 ROW_NUMBER, RANK ,DENSE_RANK
其中row_number只能用于分析函数,rank和dense_rank可以用于组函数和分析函数。排名函数都没有windows子句,此3个分析函数必须使用order by,当然如果不要排序,也可以写order by null,order by 常量或多个常量,直接写NULL就行了,事实还会做一定sort动作的,只不过相当于增加几个伪列,都是一样的值。
用于分析函数他们的语法是:
Row_number() Over ([Partition by