Sql cume_dist与百分比等级或两者之间的差异

Sql cume_dist与百分比等级或两者之间的差异,sql,oracle,plsql,Sql,Oracle,Plsql,在下面的查询中,我返回了不同的结果,但无法确定这两个函数是什么 select firstname,gender,weight,height, cume_dist() over (order by height) cd, percent_rank() over (order by height) pr from childstat order by height 你是在问这些函数是做什么的吗 CUME_DIST计算值在一组值中的累积分布 在您的示例中,这意味着约29%的人的身高小于或

在下面的查询中,我返回了不同的结果,但无法确定这两个函数是什么

select firstname,gender,weight,height,
  cume_dist() over (order by height) cd,
  percent_rank() over (order by height) pr
from childstat order by height


你是在问这些函数是做什么的吗

CUME_DIST计算值在一组值中的累积分布

在您的示例中,这意味着约29%的人的身高小于或等于buddy~57%的人身高小于或等于劳伦。等等


百分比秩类似于累积分布函数。百分比秩返回的值范围为0到1,包括0到1。任何集合中的第一行的百分比秩为0。返回值是数字。

这两个值的计算方式不同-请查阅手册了解这两个功能:和

  • CUME_DIST()over_子句
  • 返回值在一组值中的累积分布;也就是说,分区值小于或等于当前行中的值的百分比。这表示窗口分区的窗口顺序中与当前行相邻或对等的行数除以窗口分区中的行总数。返回值的范围为0到1

  • 百分比秩()超过子句
  • 返回小于当前行中的值(不包括最高值)的分区值百分比。返回值的范围为0到1,表示行相对排名,根据此公式计算,其中排名是行排名,行是分区行数: (排名-1)/(第1行)

    在您的示例中,对于第一行,cume_dist将返回2/7,因为在7行中有2个值(15)小于或等于当前行值(15);排名百分比将返回0,因为(1-1)/(7-1)=0

    FIRSTNAME                                          GENDER     WEIGHT     HEIGHT         CD         PR
    -------------------------------------------------- ------ ---------- ---------- ---------- ----------
    buddy                                              m             150         15 0.2857142857          0 
    Albert                                             m             923         15 0.2857142857          0 
    rosemary                                           f             123         35 0.4285714286 0.3333333333 
    lauren                                             f             876         54 0.5714285714        0.5 
    furkar                                             m             198         76 0.7142857143 0.6666666667 
    tommy                                              m             167         78 0.8571428571 0.8333333333 
    simon                                              m             256         87          1          1