ORACLE函数介绍(7)-分析函数-ZT

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4  

ORACLE函数介绍

第七篇 非著名函数之分析函数   2007.8.27

 

 

1、CUME_DIST() OVER([partition_clause] order_by_clause) 返回该行在分组序列中的相对位置,返回值介于01之间。注意哟,如果order by的列是desc,则该分组内最大的行返回列值1,如果order byasc,则该分组内最小的行返回列值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类似,本函数返回分组序列中各行在分组序列的相对位置。其返回值也是介于01之间,不过其起始值始终为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)

本函数功能与前面聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。

例如:

--聚合函数

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) 返回该分组序列总体标准偏差

例如:

--聚合函数

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;

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/293106/viewspace-580561/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/293106/viewspace-580561/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值