我基本上试图确定一系列数字落入哪个百分比值(例如1到100)。
例如,如果我有一个包含500条记录的简单表:
declare @temp table (id int, percentage int)
insert @temp (id)
select Number
from master..spt_values
where type = 'p'
and number between 1 and 500
select * from @temp
然后我想弄清楚,前1%的记录(即id为1到5的记录)将是百分比编号1,第二个记录的1%(即编号为6到10的记录)将是2号等。
我看到sql server上的一些最新版本有一些基于百分比的函数,比如PERCENTILE和PERCENT_RANK,我认为这可能是有可能的,但是我使用SQL Server 2005所以不确定我的选项是否是有限?
有没有一种简单的方法可以做到这一点,我错过了?
谢谢!
答案 0 :(得分:1)
尝试使用像502这样的行数,前2个百分比的数据组将包含" extra"行:
declare @temp table (id int, percentage int)
insert @temp (id, percentage)
select
Number,
ntile(100) over (order by number)
from master..spt_values
where type = 'p'
and number between 1 and 500
select * from @temp
结果:
id percentage
1 1
2 1
3 1
4 1
5 1
6 2
7 2
8 2
9 2
10 2
11 3
.. ..
.. ..