近似百分位数函数:APPROX_PERCENTILE
功能描述
APPROX_PERCENTILE
函数用于计算并返回指定列中数值的近似百分位数。该函数接受两个参数:第一个参数是需要计算百分位数的列名,第二个参数是表示所需百分位数的浮点数。当数据按照升序排列时,该函数返回对应于指定百分比的数值。
参数说明
col
: 需要计算百分位数的列名。该列应包含数值类型的数据,如 tinyint、smallint、int、bigint、float、double 或 decimal。
percentage
: 一个 double 类型的常量,表示所需计算的百分位数。该值应在 [0.0, 1.0] 区间内。
返回结果
函数返回值为 double 类型。如果指定了 DISTINCT
关键字,则计算结果将基于去重后的数据集进行。需要注意的是,null 值不会参与计算。
使用示例
- 计算数据集中的中位数(50%分位数):
SELECT approx_percentile(col, 0.5) FROM VALUES (0), (6), (6), (7), (9), (10) AS tab(col);
+-------------------------------+
| approx_percentile(col, 0.5BD) |
+-------------------------------+
| 6.25 |
+-------------------------------+
- 计算去重后数据集中的中位数(50%分位数):
SELECT approx_percentile(DISTINCT col, 0.5) FROM VALUES (0), (6), (6), (7), (9), (10) AS tab(col);
+----------------------------------------+
| approx_percentile(DISTINCT col, 0.5BD) |
+----------------------------------------+
| 7.0 |
+----------------------------------------+
- 计算数据集中的 25% 分位数:
SELECT approx_percentile(col, 0.25) FROM VALUES (0), (6), (6), (7), (9), (10) AS tab(col);
+--------------------------------+
| approx_percentile(col, 0.25BD) |
+--------------------------------+
| 6.0 |
+--------------------------------+
- 计算数据集中的 75% 分位数:
SELECT approx_percentile(col, 0.75) FROM VALUES (0), (6), (6), (7), (9), (10) AS tab(col);
+--------------------------------+
| approx_percentile(col, 0.75BD) |
+--------------------------------+
| 9.0 |
+--------------------------------+
总结
APPROX_PERCENTILE
函数为用户提供了一种快速计算数据集近似百分位数的方法。通过调整 percentage
参数,用户可以轻松获取不同百分位数的数值,从而更好地分析和理解数据。在使用该函数时,请注意确保数据类型匹配,并且 percentage
参数值在有效范围内。