正确计算百分位数的方法

时间:2017-02-17 00:46:35

标签: sql-server

我正在使用Microsoft SQL Server 2014。

我有一个列名为col1, col2, Values的表。我需要为每对唯一Values标识符找到col1, col2的第99个百分位数。即Values中99%的值较小的值。

我尝试了以下内容:

    SELECT [col1], [col2],
   PERCENTILE_CONT(0.99) WITHIN GROUP (ORDER BY [Values] ASC) 
      OVER (PARTITION BY [col1], [col2]) "Percentile_Cont"   
FROM MyTable

然而,它会产生重复的[col1], [col2]对。

建议的正确实施是为了获得具有相应百分位数的唯一[col1], [col2]对吗?

编辑: 样本数据:

col1 col2 values
A   a2  1
A   a2  2
A   a2  1
A   a2  12
B   a1  11
B   a1  11
B   a1  12
B   a1  15

预期答案:

A   a2  11.7
B   a1  14.91

1 个答案:

答案 0 :(得分:1)

使用DISTINCT

SELECT DISTINCT [col1], [col2], 
  PERCENTILE_CONT(0.99) 
  WITHIN GROUP (ORDER BY [Values] ASC) 
  OVER (PARTITION BY [col1], [col2]) "Percentile_Cont"   
FROM MyTable