hive中有两个函数可以用来计算分位数:percentile和percentile_approx
具体使用方如下:
(1)percentile : percentile(col, p)
col是要计算的列(值必须为int类型),p的取值为0-1,若为0.5,那么就是2分位数,即中位数。
-- 计算一个分位数
SELECT percentile(column_name, 0.5) as quartiles
FROM table_name;
-- 计算多个分位数
SELECT percentile(column_name, array(0.25, 0.5, 0.75)) as quartiles
FROM table_name;
(2)percentile_approx : percentile_approx(col, p)。列为数值类型都可以。
percentile_approx还有一种形式percentile_approx(col, p, B),参数B控制内存消耗的近似精度,B越大,结果的精度越高。默认值为10000。当col字段中的distinct值的个数小于B时,结果就为准确的百分位数。