create or replace function median(anyarray) returns float as $$
select (a[round(array_upper(a,1)/2.0)] + a[array_upper(a,1)
- round(array_upper(a,1)/2.0) + 1]) / 2.0::float
from sort($1) a;
$$ language sql immutable strict;