Oracle分析函数总结(3)- 数值分布 - cume_dist,percent_rank,ntile,percentile_disc,percentile_cont,ratio_to_report

本文详细介绍了Oracle数据库中的分析函数,包括cume_dist, percent_rank, ntile, percentile_disc, percentile_cont以及ratio_to_report的用法和区别。这些函数用于计算数值在有序数据集中的分布情况,例如相对位置、百分比分布和数据分箱等。通过实例展示了它们在聚合和分析函数中的应用。" 135505553,13625851,HTML5/CSS3/JS实现五彩纸屑礼花筒效果,"['HTML', 'CSS', 'JavaScript', '前端框架', '网页设计']
摘要由CSDN通过智能技术生成

分析函数的基本概念和语法 -> http://blog.csdn.net/fw0124/article/details/7842039

下面这些函数计算某个值在一组有序数据中的累计分布(cumulative distribution)

1) cume_dist()
计算结果为相对位置/总行数。返回值(0,1]。
例如在一个5行的组中,返回的累计分布值为0.2,0.4,0.6,0.8,1.0;
注意对于重复行,计算时取重复行中的最后一行的位置。

a)作为聚合函数的用法
语法:cume_dist(expr) with group (order by exp)
cume_dist()用参数中的指定的数据构造一条假定的数据并插入到现存行中,
然后计算这条假定数据在所有行中的相对位置。
例如下面的查询中,emp中总共有14行数据,
假定的数据(deptno=20,sal=4000)会插入到第9行,
因此相对位置 9/(14+1)=0.6。

tony@ORA11GR2> select cume_dist(20,4000)
  2      within group (order by deptno, sal) cume_dist
  3  from emp;

 CUME_DIST
----------
        .6


b)作为分析函数的用法
语法:cume_dist() over([partition_clause] order_by_clause)
例如计算每个人在本部门按照薪水排列中的相对位置。

tony@ORA11GR2> select ename, sal, deptno,
  2      cume_dist() over(partition by deptno order by sal) cume_dist
  3   from emp;

ENAME                       SAL     DEPTNO  CUME_DIST
-------------------- ---------- ---------- ----------
MILLER                     1300         10 .333333333
CLARK                      2450         10 .666666667
KING                       5002         10          1
SMITH                       800         20         .2
ADAMS                      1100         20         .4
JONES                      2975         20         .6
SCOTT                      3000         20          1
FORD                       3000         20          1
JAMES                       950         30 .166666667
MARTIN                     1250         30         .5
WARD                       1250         30         .5
TURNER                     1500         30 .666666667
ALLEN                      1600         30 .833333333
BLAKE                      2850         30          1

已选择14行。


2) percent_rank()
和cume_dist的不同点在于计算分布结果的方法。
计算方法为 (相对位置-1)/(总行数-1),
因此第一行的结果为0。返回值[0,1]。
例如在一个5行的组中,返回的累计分布值为0,0.25,0.5,0.75,1.0;
注意对于重复行,计算时取重复行中的第一行的位置。

a)作为聚合函数的用法
语法:percent_rank(expr) with group (order by exp)
下面的例子中,类似cume_dist,假定数据(deptn

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值