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 |