oracle中计算PERCENTILE_DISC()的数学方法是什么

问题描述 投票:0回答:1

我有一系列数字如下:2, 3, 5, 1, 9, 10, 20, 34, 77, 55, 11, 13, 56, 99 我编写了一个查询来计算 25 的 PERCENTILE,如下所示:

SELECT
  PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY VALUE_DATA) AS percent_disc,
  PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY VALUE_DATA) AS percent_cont
FROM
  tmp_percentile

结果是: PERCENTILE_CONT(0.25) = 6 且 PERCENTILE_DISC(0.25) = 5。 我通过此链接学习了如何计算 PERCENTILE_CONT:https://docs.oracle.com/cd/B13789_01/server.101/b10759/functions100.htm#i1000909。但我仍然没有找到 PERCENTILE_DISC 的答案。为什么 PERCENTILE_DISC(0.25) = 5

sql oracle percentile
1个回答
0
投票

PERCENTILE_DISC 返回数据中的实际值,而 PERCENTILE_CONT 可以返回数据中不存在的值。例如

PERCENTILE_DISC(0.25) 函数将以升序对数字进行排序,然后选择第 25 个百分位数的值。

  • 对数字进行排序:1, 2, 3, 5, 9, 10, 11, 13, 20, 34, 55, 56, 77, 99
  • 找到第 25 个百分位数对应的位置。位置 (P) 使用以下公式计算:P = N * 百分位数,其中 N 是数据中的项目总数,此处为 14,因此,P = 14 * 0.25 = 3.5。
  • 由于位置不是整数,PERCENTILE_DISC 函数舍入到最接近的整数(本例中为 4),返回该位置 (P) 的数据值。因此,该值为 5。

参见:https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/PERCENTILE_DISC.html#GUID-7C34FDDA-C241-474F-8C5C-50CC0182E005

© www.soinside.com 2019 - 2024. All rights reserved.