Hive:GROUP By上的子查询

时间:2015-08-02 07:54:40

标签: hadoop hive hiveql

需要Hive查询的帮助。

我写了一个Hive查询:

select to_date(from_unixtime(epoch)) as date, count1 , count2, count3 from table1 where count3=168

这给我的结果如下:

date       count1     count2     count3
7-15-2015  168        3           7
7-15-2015  168        1           5
7-15-2015  168        4           3
and similarly for other dates

...

最后我需要编写一个返回我的查询,每个日期的count2和count3的中值。 例如:我需要输出:

date       count1     count2     count3
7-15-2015  168        3           5
and similarly for other dates

我知道我需要按日期使用group,然后在其上编写子查询。 但我无法写出正确的查询。 任何人都可以帮助我

1 个答案:

答案 0 :(得分:0)

中位数是第二四分位数,第五十分位数和第50百分位数。我们可以使用蜂巢中的百分位函数来计算第50个百分位:

select to_date(from_unixtime(epoch)) as date
 , count1 
 , percentile(count2,0.5) as median_ct2
 , percentile(count3,0.5) as median_ct3
from table1 
where count1=168
group by to_date(from_unixtime(epoch)), count1;