hive中有两个函数可以用来计算分位数:percentilepercentile_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时,结果就为准确的百分位数。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐