如何在 PrestoSQL 中计算中位数?

Rom*_*rés 4 sql group-by aggregate-functions median presto

Presto SQL 中似乎没有为此目的的本机函数。你知道有什么方法可以有效地聚合一个组并返回它的中位数吗?

GMB*_*GMB 7

approx_percentile()应该是一个合理的方法。假设有一个像 的表mytable(id, val),您希望通过id以下方式进行聚合:

select id, approx_percentile(val, 0.5) median_val
from mytable
group by id
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这是一个近似解。即将发布的 Presto 版本将在一般情况下提供更高的准确性,请关注 https://github.com/prestosql/presto/pull/5158 了解详细信息。 (2认同)