SQL Server:计算不相交百分位数的函数

时间:2016-03-07 19:49:30

标签: sql-server function

由于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列。

我不想使用存储过程。

谢谢,

0 个答案:

没有答案