hive中如何计算中位数
定义:又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分
要求不同商品售价的中位数,以及所有商品售价的中位数,数据初始化如下:
简单列举几个hive中可使用方法
法一:percentile_approx()
函数
输出不同商品售价的中位数结果:
product_name | med_price |
---|---|
商品A | 1.55 |
商品B | 3.2 |
输出所有商品售价的中位数结果:
med_price |
---|
2.55 |
percentile_approx(col, p,B)
参数B控制内存消耗的近似精度,B越大,结果的准确度越高。默认为10,000。
在不分组的情况下,也可一次性求多个分位数,percentile_approx(col,array(0.05,0.5,0.95),9999),结果返回一个分位数列表。
法二:排序后打分位点
输出不同商品售价的中位数结果:
product_name | med_price |
---|---|
商品A | 1.60 |
商品B | 3.5 |
备注:两种方式计算出来的结果出现了差异,这可能是由于法一percentile_approx计算百分数的方式与法二不一致导致