由于ntile
可能会在多个百分位数中放入相同的数字,因此我使用查询来计算百分位数,使用排名。
包含数据的表可以是:
CREATE TABLE #T1
( score integer);
INSERT INTO #T1 (score)
VALUES ('-1'), ('0'), ('0'), ('0'), ('2'), ('2'), ('3'), ('3'), ('4'), ('4'), ('6');
查询是:
select
*, floor(5 * (rk- 1) / total) + 1 as q
from
(select
*,
rank() over (partition by 1 order by score) as rk,
count(*) over(partition by 1) as total
from #t1) z
我想创建一个返回百分位数的FUNCTION,因此我可以传递表格和列名称。在这种情况下#t1和得分并返回q列。
我不想使用存储过程。
谢谢,