oracle函数介绍(7) 非著名函数之分析函数

zhouqg 贡献于2012-11-03

作者   创建于2007-08-09 15:22:56   修改者  修改于1899-12-30 00:00:00字数3251

文档摘要:ORACLE函数介绍第七篇非著名函数之分析函数2007.8.27CUME_DIST()OVER([partition_clause]order_by_clause)返回该行在分组序列中的相对位置,返回值介于0到1之间。
关键词:

 ORACLE函数介绍 第七篇 非著名函数之分析函数 2007.8.27 1、 CUME_DIST() OVER([partition_clause] order_by_clause) 返回该行在分组序列中的相对位置,返回值介于0到1之间。注意哟,如果order by的列是desc,则该分组内最大的行返回列值1,如果order by为asc,则该分组内最小的行返回列值1。 例如:SELECT col, value, CUME_DIST() OVER(ORDER BY value DESC) FROM tmp1; 2、 NTILE(n) OVER([partition_clause] order_by_clause) ntile是个很有意思的统计函数。它会按照你指定的组数(n)对记录做分组 例如:SELECT t.*,ntile(5) over(order by value desc) FROM tmp1 t; 3、 PERCENT_RANK() OVER([partition_clause] order_by_clause) 与CUME_DIST类似,本函数返回分组序列中各行在分组序列的相对位置。其返回值也是介于0到1之间,不过其起始值始终为0而终结值始终为1。 例如:SELECT col, value, PERCENT_RANK() OVER(ORDER BY value) FROM tmp1; 4、 PERCENTILE_CONT(n) WITHIN GROUP (ORDER BY col [DESC|ASC]) OVER(partition_clause) 本函数功能与前面聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。 例如: --聚合函数 SELECT col, max(value), min(value), sum(value), PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY value) a, PERCENTILE_CONT(0.8) WITHIN GROUP(ORDER BY value) b FROM TMP1 group by col; --分析函数 SELECT col, value, sum(value) over(partition by col) "Sum", PERCENTILE_CONT(0.5) WITHIN GROUP( ORDER BY value) OVER(PARTITION BY col) "CONTa", PERCENTILE_CONT(0.8) WITHIN GROUP( ORDER BY value) OVER(PARTITION BY col) "CONTb" FROM TMP1; 5、 PERCENTILE_DISC(n) WITHIN GROUP (ORDER BY col [DESC|ASC]) OVER(partition_clause) 本函数功能与前面聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。 例如: --聚合函数 [三思笔记]-Oracle函数介绍--著名及非著名函数 http://www.5ienet.com/ QQ:5454589君三思 SELECT col, max(value), min(value), sum(value), PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY value) a, PERCENTILE_DISC(0.8) WITHIN GROUP(ORDER BY value) b FROM TMP1 group by col; --分析函数 SELECT col, value, sum(value) over(partition by col) "Sum", PERCENTILE_DISC(0.5) WITHIN GROUP( ORDER BY value) OVER(PARTITION BY col) "CONTa", PERCENTILE_DISC(0.8) WITHIN GROUP( ORDER BY value) OVER(PARTITION BY col) "CONTb" FROM TMP1; 6、 RATIO_TO_REPORT(col) over ([partition_clause]) 本函数计算本行col列值在该分组序列sum(col)中所占比率。如果col列为空,则返回空值。 例如: SELECT col, value, RATIO_TO_REPORT(value) OVER(PARTITION BY col) "RATIO_TO_REPORT" FROM TMP1 7、 STDDEV ([distinct|all] col) OVER (analytic_clause) 返回列的标准偏差。 例如: --聚合函数 SELECT col, STDDEV(value) FROM TMP1 GROUP BY col; --分析函数 SELECT col, value, STDDEV(value) OVER(PARTITION BY col ORDER BY value) "STDDEV" FROM TMP1; 8、 STDDEV_SAMP(col) OVER (analytic_clause) 功能与上相同,与STDDEV不同地方在于如果该分组序列只有一行的话,则STDDEV_SAMP函数返回空值,而STDDEV则返回0。 例如: --聚合函数 SELECT col, STDDEV(value),STDDEV_SAMP(value) FROM TMP1 GROUP BY col; --分析函数 SELECT col, value, STDDEV(value) OVER(PARTITION BY col ORDER BY value) "STDDEV", STDDEV_SAMP(value) OVER(PARTITION BY col ORDER BY value) "STDDEV_SAMP" FROM TMP1; 9、 STDDEV_POP(col) OVER (analytic_clause) 返回该分组序列总体标准偏差 例如: [三思笔记]-Oracle函数介绍--著名及非著名函数 http://www.5ienet.com/ QQ:5454589君三思 --聚合函数 SELECT col, STDDEV_POP(value) FROM TMP1 GROUP BY col; --分析函数 SELECT col, value, STDDEV_POP(value) OVER(PARTITION BY col ORDER BY value) "STDDEV_POP" FROM TMP1; 10、 VAR_POP(col) OVER (analytic_clause) 返回分组序列的总体方差,VAR_POP进行如下计算:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr) 例如: --聚合函数 SELECT col, VAR_POP(value) FROM TMP1 GROUP BY col; --分析函数 SELECT col, value, VAR_POP(value) OVER(PARTITION BY col ORDER BY value) "VAR_POP" FROM TMP1; 11、 VAR_SAMP(col) OVER (analytic_clause) 与上类似,该函数返回分组序列的样本方差,,其计算公式为:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / (COUNT(expr) - 1) 例如: --聚合函数 SELECT col, VAR_SAMP(value) FROM TMP1 GROUP BY col; --分析函数 SELECT col, value, VAR_SAMP(value) OVER(PARTITION BY col ORDER BY value) "VAR_SAMP" FROM TMP1; 12、 VARIANCE(col) OVER (analytic_clause) 该函数返回分组序列方差,Oracle计算该变量如下: 如果表达式中行数为1,则返回0,如果表达式中行数大于1,则返回VAR_SAMP 例如: --聚合函数 SELECT col, VAR_SAMP(value),VARIANCE(value) FROM TMP1 GROUP BY col; --分析函数 SELECT col, value, VAR_SAMP(value) OVER(PARTITION BY col ORDER BY value) "VAR_SAMP", VARIANCE(value) OVER(PARTITION BY col ORDER BY value) "VARIANCE" FROM TMP1; [三思笔记]-Oracle函数介绍--著名及非著名函数 http://www.5ienet.com/ QQ:5454589君三思

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档