Как вычислить медиану в PrestoSQL?

Похоже, что в Presto SQL для этой цели нет собственной функции. Знаете ли вы, как эффективно объединить группу и вернуть ее медианное значение?


person Roméo Després    schedule 23.09.2020    source источник


Ответы (1)


approx_percentile() должен быть разумным подходом. Предполагая, что таблица типа mytable(id, val), которую вы хотите агрегировать по id:

select id, approx_percentile(val, 0.5) median_val
from mytable
group by id
person GMB    schedule 23.09.2020
comment
Обратите внимание, что это приблизительное решение. Предстоящий выпуск Presto обеспечит большую точность в общем случае, следуйте github.com/prestosql/presto/pull/ 5158, чтобы узнать подробности. - person Piotr Findeisen; 24.09.2020