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

标签 sql sql-server math sql-server-2012 statistics

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

当然有一些关于this的文章但并未明确提及它们是如何工作的……换句话说,幕后运行的数学。

谁能用一些简单的例子来解释一下。

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

最佳答案

此查询中的列将相等:

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

关于sql - 计算 PERCENT_RANK() 、CUME_DIST() 、PERCENTILE_CONT() 和 PERCENTILE_DISC() 的数学方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814171/

相关文章:

sql - 获取指定列为空的第一组行

python - Python 两点中间的垂直线

sql - *= 在 SQL 的 WHERE 子句中是什么意思?

sql-server - 如何以编程方式克隆 SQL Server 中的数据库架构?

c# - SqlCommand 返回 1 但数据库未更新。我做错了什么?

sql-server - 列出当前发布用于复制 MS-SQL 的所有表

ruby-on-rails - Ruby float 学 - Sum Calc 中的精度问题

java - 用Java计算标准差、方差

SQL有条件地选择一行

sql - 分组并计算每个不同值的百分比