【发布时间】:2011-09-22 19:46:32
【问题描述】:
我想要一个计算字段,它可以为我提供表格中列值的百分位数。最好的方法是什么?
我有一个表,其中只有一列包含从 0 到 10000 的值,随机分布。我想添加另一列来告诉我同一行上的值相对于原始列中的所有其他值的百分位数。
这里解释了百分位数的 2 个定义:http://onlinestatbook.com/chapter1/percentiles.html。
我使用的是我知道的定义。示例:一个值位于第 25 个百分位表示 25% 的总体处于 AT 或低于该值。
我想到的算法如下,希望有人能帮我翻译成SQL,因为我是SQL初学者:
对于我表中的所有行,如果值小于或等于当前行中的值,则 count++。在表的末尾,我进行除法:计数/行数以获得我的百分位数。这对我来说已经足够准确了,因为有很多行。
【问题讨论】:
-
能否确定列中是否存在重复项?此外,您所说的“百分位数”似乎有些混乱,所以我真的建议添加一些示例输入和输出来清除它。
-
@Chris Cunningham:这就是我所说的百分位数:en.wikipedia.org/wiki/Percentile。是的,可以有重复,就像 SAT 分数中有重复一样。
-
给我们示例输入和输出。如果数字是1、2、3、4,你认为1的“百分位数”是10,还是0?
-
克里斯,对于 1,它的百分位数是 25,因为 25% 的“人口”等于或低于 1。对于 2,百分位数是 50...
标签: sql sql-server statistics