23 lines
476 B
MySQL
23 lines
476 B
MySQL
|
-- source: https://wiki.postgresql.org/wiki/Aggregate_Median
|
||
|
|
||
|
CREATE OR REPLACE FUNCTION _final_median(NUMERIC [])
|
||
|
RETURNS NUMERIC AS
|
||
|
$$
|
||
|
SELECT AVG(val)
|
||
|
FROM (
|
||
|
SELECT val
|
||
|
FROM unnest($1) val
|
||
|
ORDER BY 1
|
||
|
LIMIT 2 - MOD(array_upper($1, 1), 2)
|
||
|
OFFSET CEIL(array_upper($1, 1) / 2.0) - 1
|
||
|
) sub;
|
||
|
$$
|
||
|
LANGUAGE 'sql' IMMUTABLE;
|
||
|
|
||
|
CREATE AGGREGATE median( NUMERIC ) (
|
||
|
SFUNC =array_append,
|
||
|
STYPE = NUMERIC [],
|
||
|
FINALFUNC =_final_median,
|
||
|
INITCOND ='{}'
|
||
|
);
|