sqlgroup-byaggregate-functionsprestomedian

How to compute a median in PrestoSQL?


It seems like there is no native function for that purpose in Presto SQL. Do you know any way to efficiently aggregate a group and return its median?


Solution

  • approx_percentile() should be a reasonable approach. Assuming a table like mytable(id, val), that you want to aggregate by id:

    select id, approx_percentile(val, 0.5) median_val
    from mytable
    group by id