资源描述:
《oracle函数介绍第七篇非著名函数之分析函数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ORACLE函数介绍第七篇非著名函数之分析函数2007.8.271>CUME_DIST()OVER([partition_clause]order_by_clause)返回该行在分组序列中的相对位置,返回值介于0到1之间。注意哟,如果orderby的列是desc,则该分组内最大的行返冋列值1,如果orderby为asc,则该分组内最小的行返冋列值lo例女口:SELECTcol,value,CUME_DIST()OVER(ORDERBYvalueDESC)FROMtmpl;2、NTIL玖n)OVER([partili
2、on_clause]order_by_clause)ntile是个很有意思的统计函数。它会按照你指定的组数(n)対记录做分组例如:SELECT,ntile(5)over(orderbyvaluedesc)FROMtmplt;3、PERCENT_RANK()OVER(rpartition_clauselorder_by_clause)与CUME_DIST类似,本函数返回分组序列中各行在分组序列的相对位置。其返回值也是介于0到1之间,不过其起始值始终为0而终结值始终为lo例如:SELECTcolzvalue,PERCE
3、NT_RANK()OVER(ORDERBYvalue)FROMtmpl;4、PERCENTILE_CONT(n)WITHINGROUP(ORDERBYcol[DESC
4、ASC])OVER(paitition_clause)本函数功能与前面聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。例如:一聚合凿数SELECTcolfmax(value)rmin(value)rsum(value)rPERCENTILE_CONT(0.5)WITHINGROUP(ORDERBYvalue)a,PERCENTILE_C
5、ONT(0.8)WITHINGROUP(ORDERBYvalue)bFROMTMP1groupbycol;—分析函数SELECTcol,value,sum(value)over(partitionbycol)"Sum”,PERCENTILE_CONT(0.5)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYcol)”CONTa”,PERCENTILE_CONT(0.8)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYcol)“CONTb”FROMT
6、MP1;5、PERCENTILE_DlSC(n)WITHINGROUP(ORDERBYcol[DESC
7、ASC])OVER(partition_clause)本函数功能与前而聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。例如:一聚合函数SELECTcol,max(value),min(value),sum(value),PERCENTILE_DISC(0.5)WITHINGROUP(ORDERBYvalue)a,PERCENTILE_DISC(0・8)WITHINGROUP(ORDERBYvalue
8、)bFROMTMP1groupbycol;一分析函数SELECTcol,value,sum(value)over(partitionbycol)"Sum”,PERCENTILE_DISC(0.5)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYcol)”CONTa”,PERCENTILE_DISC(0.8)WITHINGROUP(ORDERBYvalue)OVER(PARTITIONBYCO1)”CONTb”FROMTMP1;6、RATIO_TO_REPORT(col)over([
9、partition_clause])木函数计算本行col列值在该分组序列sum(col)屮所占比率。如果col列为空,则返回空值。例如:SELECTcolzvalue,RATIO_TO_REPORT(value)OVER(PARTITIONBYcol)'*RATIO_TO_REPORTnFROMTMP17、STDDEV([distinct
10、all]col)OVER(analytic.clause)返回列的标准偏差。例如:一聚合凿数SELECTcol,STDDEV(value)FROMTMP1GROUPBYcol;—
11、分析函数SELECTcol,value,STDDEV(value)OVER(PARTITIONBYcolORDERBYvalue)“STDDEV”FROMTMP1;8、STDDEV_SAMP(col)OVER(analytic_clause)功能与上相同,与STDDEV不同地方在于如果该分组序列只有一行的话,则STDDEV_SAMP函数返回空值,而STDDE