什么是计算PERCENT_RANK(),CUME_DIST(),PERCENTILE_CONT()和PERCENTILE_DISC()的数学方法

mcU*_*ser 3 sql sql-server math statistics sql-server-2012

我试图弄清楚SQL Server Denali CTP 3中这些新引入的函数是如何工作但是没有正确理解.

有一些关于此的文章,但它没有被清楚地提及它们是如何工作的...换句话说,数字在幕后运行.

有谁可以用一些简单的例子解释一下.

我在这里找到了一个但是当我试图将这个作者的逻辑放在第一个链接中以获得第5个项目的Percent_Rank和Cume_Dist时,我得到了不同的结果.

Qua*_*noi 6

此查询中的列将相等:

SELECT  value,
        PERCENT_RANK() OVER (ORDER BY value),
        (
        SELECT  COUNT(CASE WHEN qo.value < q.value THEN 1 END) / (COUNT(*) - 1)
        FROM    mytable qo
        ) AS percent_rank_formula,
        CUME_DIST() OVER (ORDER BY value),
        (
        SELECT  COUNT(CASE WHEN qo.value <= q.value THEN 1 END) / COUNT(*)
        FROM    mytable qo
        ) AS cume_dist_formula
FROM    mytable q
Run Code Online (Sandbox Code Playgroud)