资源描述:
《oracle函数介绍 第七篇 非著名函数之分析函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ORACLE函数介绍第七篇非著名函数之分析函数2007.8.271、CUME_DIST()OVER([partition_clause]order_by_clause)返回该行在分组序列中的相对位置,返回值介于0到1之间。注意哟,如果orderby的列是desc,则该分组内最大的行返回列值1,如果orderby为asc,则该分组内最小的行返回列值1。例如:SELECTcol,value,CUME_DIST()OVER(ORDERBYvalueDESC)FROMtmp1;2、NTILE(n)OVER([partition_clause]order_by_clause)ntile
2、是个很有意思的统计函数。它会按照你指定的组数(n)对记录做分组例如:SELECTt.*,ntile(5)over(orderbyvaluedesc)FROMtmp1t;3、PERCENT_RANK()OVER([partition_clause]order_by_clause)与CUME_DIST类似,本函数返回分组序列中各行在分组序列的相对位置。其返回值也是介于0到1之间,不过其起始值始终为0而终结值始终为1。例如:SELECTcol,value,PERCENT_RANK()OVER(ORDERBYvalue)FROMtmp1;4、PERCENTILE_CONT(n)WIT
3、HINGROUP(ORDERBYcol[DESC
4、ASC])OVER(partition_clause)本函数功能与前面聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。例如:--聚合函数SELECTcol,max(value),min(value),sum(value),PERCENTILE_CONT(0.5)WITHINGROUP(ORDERBYvalue)a,PERCENTILE_CONT(0.8)WITHINGROUP(ORDERBYvalue)bFROMTMP1groupbycol;--分析函数SELECTcol,value,sum(value)over
5、(partitionbycol)"Sum",PERCENTILE_CONT(0.5)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYcol)"CONTa",PERCENTILE_CONT(0.8)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYcol)"CONTb"FROMTMP1;5、PERCENTILE_DISC(n)WITHINGROUP(ORDERBYcol[DESC
6、ASC])OVER(partition_clause)本函数功能与前面聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。例
7、如:--聚合函数SELECTcol,max(value),min(value),sum(value),PERCENTILE_DISC(0.5)WITHINGROUP(ORDERBYvalue)a,PERCENTILE_DISC(0.8)WITHINGROUP(ORDERBYvalue)bFROMTMP1groupbycol;--分析函数SELECTcol,value,sum(value)over(partitionbycol)"Sum",PERCENTILE_DISC(0.5)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYcol)"CONT
8、a",PERCENTILE_DISC(0.8)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYcol)"CONTb"FROMTMP1;1、RATIO_TO_REPORT(col)over([partition_clause])本函数计算本行col列值在该分组序列sum(col)中所占比率。如果col列为空,则返回空值。例如:SELECTcol,value,RATIO_TO_REPORT(value)OVER(PARTITIONBYcol)"RATIO_TO_REPORT"FROMTMP12、STDDEV([distinct
9、all]col)O
10、VER(analytic_clause)返回列的标准偏差。例如:--聚合函数SELECTcol,STDDEV(value)FROMTMP1GROUPBYcol;--分析函数SELECTcol,value,STDDEV(value)OVER(PARTITIONBYcolORDERBYvalue)"STDDEV"FROMTMP1;3、STDDEV_SAMP(col)OVER(analytic_clause)功能与上相同,与STDDEV不同地方在于如果该分组序列只有一行的话,则STDDEV_SAMP函数返回空