Hive 如何计算蜂巢中位数

Hive 如何计算蜂巢中位数,hive,hiveql,Hive,Hiveql,我有一张蜂巢桌 name age sal A 45 1222 B 50 4555 c 44 8888 D 78 1222 E 12 7888 F 23 4555 我想计算年龄列的中位数 下面是我的方法 select min(age) as HMIN,max(age) as HMAX,count(age) as HCount, IF(count(age

我有一张蜂巢桌

name    age     sal
A       45      1222
B       50      4555
c       44      8888
D       78      1222
E       12      7888
F       23      4555
我想计算年龄列的中位数

下面是我的方法

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;

感谢任何查询建议

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

select percentile(cast(age as BIGINT), 0.5) from table_name
双中值=0;
双项=0;
双项1=0;
如果(大小%2==1)
{
术语=(大小+1-1)/2;
中位数=期限;
}
else if(大小%2==0)
{
term1=(尺寸-1)/2;
term1=term1+((尺寸-1)/2)+1;
term1=term1/2;
中位数=第1项;
}

如果我有一堆双值而不是整数,会怎么样@Amar@Danzohive提供:百分位_近似值(双列,p[,B])这不是hiveHi@Success,请尝试回答,这是一个仅适用于。关于堆栈溢出是非常重要的。你可以在这里删除你的答案,以避免更多的反对票。。。似乎你不是在寻找蜂箱,而是为了C++或其他。
double median = 0;
double term = 0;
double term1 = 0;
if (size % 2 == 1)
{
    term = (size + 1 - 1) / 2;
    median = term;
}
else if (size % 2 == 0)

{
    
    term1 = (size - 1) / 2;
    term1 = term1 + ((size - 1) / 2) + 1;
    term1 = term1 / 2;
    median = term1;
}
cout << "Median of array: " << median << endl;