PERCENTILE DISC 和 PERCENTILE CONT

PERCENTILE_DISC 函数列出第一个条目的值,其中累积分布高于你使用 numeric_literal 参数提供的百分位数。

这些值按行集或分区分组,由 WITHIN GROUP 子句指定。

PERCENTILE_CONT 函数类似于 PERCENTILE_DISC 函数,但返回第一个匹配条目和下一个条目之和的平均值。

SELECT BusinessEntityID, JobTitle, SickLeaveHours,
       CUME_DIST() OVER(PARTITION BY JobTitle ORDER BY SickLeaveHours ASC)
       AS "Cumulative Distribution",
       PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY SickLeaveHours)
          OVER(PARTITION BY JobTitle) AS "Percentile Discreet"
FROM Employee;

要从匹配或超过 0.5 百分位数的行中找到确切的值,请将百分位数作为 PERCENTILE_DISC 函数中的数字文字传递。结果集中的 Percentile Discreet 列列出了累积分布高于指定百分位数的行的值。

BusinessEntityID 职称 SickLeaveHours 累积分布 百分位谨慎
272 应用专家 55 0.25 56
268 应用专家 56 0.75 56
269 应用专家 56 0.75 56
267 应用专家 57 1 56

要将计算基于一组值,请使用 PERCENTILE_CONT 函数。结果中的 Percentile Continuous 列列出了结果值和下一个最高匹配值之和的平均值。

SELECT BusinessEntityID, JobTitle, SickLeaveHours,
       CUME_DIST() OVER(PARTITION BY JobTitle ORDER BY SickLeaveHours ASC)
       AS "Cumulative Distribution",
       PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY SickLeaveHours) 
          OVER(PARTITION BY JobTitle) AS "Percentile Discreet",
       PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY SickLeaveHours) 
          OVER(PARTITION BY JobTitle) AS "Percentile Continuous"
FROM Employee;
BusinessEntityID 职称 SickLeaveHours 累积分布 百分位谨慎 百分位连续
272 应用专家 55 0.25 56 56
268 应用专家 56 0.75 56 56
269 应用专家 56 0.75 56 56
267 应用专家 57 1 56 56