百分位数函数:PERCENTILE

percentile([distinct] col, percentage[, frequency])

功能描述

百分位数函数 PERCENTILE 用于计算指定列中数值数据的百分位数。当数据按照升序排列时,该函数返回位于指定百分比位置的数值。

参数说明

  • col:需要计算百分位数的列,数据类型为数值类型,包括 tinyint、smallint、int、bigint、float、double 和 decimal。
  • percentage:表示需要计算的百分位数,其数据类型为 double 类型常量。取值范围应在 0.0 到 1.0 之间。
  • frequency(可选):表示每个数据行在计算中被计入的次数。数据类型为正整数。

返回结果

该函数返回一个 double 类型的数值,表示计算得到的百分位数。

若在函数中使用 distinct 关键字,则表示计算去重后的集合的百分位数。需要注意的是,null 值不参与计算。

使用示例

以下为 PERCENTILE 函数的使用示例:

  1. 计算非去重数据集的 30% 百分位数:
SELECT percentile(col, 0.3) FROM VALUES (0), (10), (10), (null) AS tab(col);
+------------------------+
| percentile(col, 0.3BD) |
+------------------------+
| 6.0                    |
+------------------------+
  1. 计算去重数据集的 30% 百分位数:
SELECT percentile(DISTINCT col, 0.3) FROM VALUES (0), (10), (10), (null) AS tab(col);
+---------------------------------+
| percentile(DISTINCT col, 0.3BD) |
+---------------------------------+
| 3.0                             |
+---------------------------------+
  1. 计算数据集中每个数据行被计入两次的 30% 百分位数:
SELECT percentile(col, 0.3, freq) FROM VALUES (0, 1), (10, 2) AS tab(col, freq);
+------------------------------+
| percentile(col, 0.3BD, freq) |
+------------------------------+
| 6.0                          |
+------------------------------+

联系我们
预约咨询
微信咨询
电话咨询