制定一个百分比组

时间:2015-07-22 13:08:26

标签: sql sql-server sql-server-2005

我基本上试图确定一系列数字落入哪个百分比值(例如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所以不确定我的选项是否是有限?

有没有一种简单的方法可以做到这一点,我错过了?

谢谢!

1 个答案:

答案 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
..  ..
..  ..