ORACLE函数介绍第七篇 非著名函数之分析函数
来源:互联网 发布:c语言入门最好的书 编辑:程序博客网 时间:2024/06/02 00:15
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)
本函数功能与前面聚合函数处介绍的完全相同,只是一个是聚合函数,一个是分析函数。
例如:
--聚合函数
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;
- ORACLE函数介绍第七篇 非著名函数之分析函数
- ORACLE函数介绍第六篇 著名函数之分析函数
- ORACLE函数介绍第六篇 著名函数之分析函数
- ORACLE函数介绍第二篇 非著名函数之单值函数
- ORACLE函数介绍第四篇 非著名函数之聚合函数
- ORACLE函数介绍第三篇 著名函数之聚合函数
- ORACLE函数 非著名函数之单值函数
- ORACLE 著名函数之单值函数
- ORACLE函数介绍第一篇 著名函数之单值函数
- ORACLE函数介绍第一篇 著名函数之单值函数
- 介绍oracle分析函数
- ORACLE第七篇(日期函数)
- Oracle之分析函数
- Oracle 分析函数使用介绍
- Oracle 分析函数使用介绍
- Oracle 分析函数使用介绍
- Oracle 分析函数使用介绍
- ORACLE函数介绍第五篇 分析函数简述
- (原创)报考计算机博士之前应该注意的几个问题---写给应届硕士毕业生
- ORACLE函数介绍第六篇 著名函数之分析函数
- 项目进度计划中的时间管理
- 图形软件与图形工作站硬件巧妙搭配实例详解
- 如何在Oracle存储过程中实现分页
- ORACLE函数介绍第七篇 非著名函数之分析函数
- ORACLE函数介绍第八篇 综述
- From blog
- 轻松实现服务器网卡冗余
- 测试
- AMD新一代Barcelona CPU性能实测曝光
- 基于java使用FCKeditor
- 问题记录1
- 拥抱四核-迎接高性能计算平民化时代