Hive 配置单元查询,仅选择特定百分比中的记录

Hive 配置单元查询,仅选择特定百分比中的记录,hive,Hive,我的表有两列-ID和总持续时间: id tot_dur 123 1 124 2 125 5 126 8 我想要一个仅选择第75百分位的配置单元查询。它应该只是最后一条记录: id tot_dur 126 8 这就是我所拥有的,但是我很难理解OVER()和PARTITIONED BY()函数的用法,因为根据我的研究,这是我应该使用的函数。在我获得tot_dur列之前,我应该sum和groupby列duration。不确定percentile是否是正确的函数,因为我发现了带有percenti

我的表有两列-ID和总持续时间:

id  tot_dur
123 1
124 2
125 5
126 8
我想要一个仅选择第75百分位的配置单元查询。它应该只是最后一条记录:

id  tot_dur
126 8
这就是我所拥有的,但是我很难理解OVER()和PARTITIONED BY()函数的用法,因为根据我的研究,这是我应该使用的函数。在我获得
tot_dur
列之前,我应该
sum
groupby
duration
。不确定
percentile
是否是正确的函数,因为我发现了带有
percentile\u近似值的用例

select k1.id as id, percentile(cast(tot_dur as bigint),0.75) OVER () as tot_dur
from (
SELECT id, sum(duration) as tot_dur 
FROM data_source
GROUP BY id) k1
group by id

如果我没弄错的话,这就是你想要的:

with data as (select stack(4,
123, 1,
124, 2,
125, 5,
126, 8) as (id,  tot_dur))
-----------------------------------------------------------------------------
select data.id, data.tot_dur 
from data 
join (select percentile(tot_dur, 0.75) as threshold from data) as t 
where data.tot_dur >= t.threshold;