Oracle中PERCENTILE_DISC()的数学计算方法及结果疑问
PERCENTILE_DISC的数学计算方法及结果解释
核心逻辑
PERCENTILE_DISC是离散百分位数函数,它的核心特点是返回数据集中实际存在的数值,不会像PERCENTILE_CONT那样生成插值结果。
计算步骤(以你的数据为例)
先对数据排序
你的原始数据:2, 3, 5, 1, 9, 10, 20, 34, 77, 55, 11, 13, 56, 99
按升序排序后得到:1, 2, 3, 5, 9, 10, 11, 13, 20, 34, 55, 56, 77, 99,共14个数据点(记为n=14)。计算位置索引
根据PERCENTILE_DISC的标准算法,位置索引计算公式为:
k = p * (n - 1)
其中p是目标百分位(这里是0.25),代入数值计算:
k = 0.25 * (14 - 1) = 0.25 * 13 = 3.25
确定目标数据位置
对计算得到的k取向上取整(天花板值),得到m = CEIL(3.25) = 4。这里的位置从1开始计数,因此我们取排序后列表的第4个元素。获取结果
排序后第4个元素是5,这就是PERCENTILE_DISC(0.25)的结果。
补充对比
和PERCENTILE_CONT的插值逻辑不同,PERCENTILE_DISC始终返回数据集中已有的值,它会找到第一个大于等于目标百分位对应位置的实际数据点,适合需要离散结果的分析场景。
内容的提问来源于stack exchange,提问作者trangdtt
相关产品推荐
相关产品推荐

