O.O*_*O.O 6 t-sql sql-server sql-server-2008
需要计算每个学生的百分位数(第1至第99百分位数),并获得单个测试的分数.
我对NTILE的msdn定义感到有些困惑,因为它没有明确提到百分等级.我需要某种保证NTILE是用于计算百分等级的正确关键字.
declare @temp table
(
StudentId int,
Score int
)
insert into @temp
select 1, 20
union
select 2, 25
.....
select NTILE(100) OVER (order by Score) PercentileRank
from @temp
Run Code Online (Sandbox Code Playgroud)
它看起来对我来说是正确的,但这是计算百分等级的正确方法吗?
NTILE 与百分位排名绝对不同。NTILE 只是将一组数据按提供的数字平均划分(如上面 RoyiNamir 所述)。如果您绘制两个函数的结果,NTILE 将是一条从 1 到 n 的完美线性线,而百分位排名 [通常] 会根据您的数据有一些曲线。
百分位排名比简单地除以 N 要复杂得多。然后它会获取每一行的编号并计算出它在分布中的位置,并在必要时进行插值(这是非常占用 CPU 的)。我有一个 525,000 行的 Excel 工作表,它以 100% 的速度控制我的 8 核机器的 CPU 15-20 分钟,只是为了找出单列的 PERCENTRANK 函数。
有错别字吗?
select NTILE(100) OVER (order by Score) PercentileRank
from @temp
Run Code Online (Sandbox Code Playgroud)
而且你的剧本看起来不错。如果您认为其中有问题,您能具体说明一下吗?
| 归档时间: |
|
| 查看次数: |
15893 次 |
| 最近记录: |