如何计算Hive的中位数

Ama*_*man 28 hive hiveql

我有一个蜂巢桌,

name    age     sal
A       45      1222
B       50      4555
c       44      8888
D       78      1222
E       12      7888
F       23      4555
Run Code Online (Sandbox Code Playgroud)

我想计算年龄栏的中位数.

以下是我的方法

select min(age) as HMIN,max(age) as HMAX,count(age) as HCount,
IF(count(age)%2=0,'even','Odd') as PCOUNT 
from v_act_subjects_bh;
Run Code Online (Sandbox Code Playgroud)

感谢任何查询建议

Ama*_*mar 75

您可以使用百分位数函数来计算中位数.试试这个:

select percentile(cast(age as BIGINT), 0.5) from table_name
Run Code Online (Sandbox Code Playgroud)

  • @Danzo hive提供:percentile_approx(DOUBLE col,p [,B]) (8认同)