У меня есть таблица с двумя столбцами - ID и общая продолжительность:
id tot_dur
123 1
124 2
125 5
126 8
Я хочу запрос Hive, который выбирает только 75-й процентиль. Это должна быть только последняя запись:
id tot_dur
126 8
Это то, что у меня есть, но мне трудно понять использование функций OVER () и PARTITIONED BY (), так как из того, что я исследовал, это те функции, которые я должен использовать. Прежде чем я получу столбец tot_dur
, я должен sum
и group by
столбец duration
. Не уверен, является ли percentile
правильной функцией, потому что я нашел варианты использования с percentile_approx
.
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