Nilai Median pada Postgres

CREATE OR REPLACE FUNCTION array_median(anyarray)
RETURNS anyelement AS
$$
SELECT CASE
WHEN array_upper($1,1) = 0 THEN null
WHEN mod(array_upper($1,1),2) = 1 THEN asorted[ceiling(array_upper(asorted,1)/2.0)]
ELSE ((asorted[ceiling(array_upper(asorted,1)/2.0)] + asorted[ceiling(array_upper(asorted,1)/2.0)+1])/2.0) END
FROM (SELECT ARRAY(SELECT ($1)[n] FROM
generate_series(1, array_upper($1, 1)) AS n
WHERE ($1)[n] IS NOT NULL
ORDER BY ($1)[n]
) As asorted) As foo ;
$$
LANGUAGE 'sql' IMMUTABLE;
CREATE AGGREGATE median(anyelement) (
SFUNC=array_append,
STYPE=anyarray,
FINALFUNC=array_median
);
Cara panggilnya adalah sebagai berikut:
SELECT median(columnname) FROM tablename;
Kalo mo dibandingin sama nilai lain gunakan perintah:
SELECT median(columnname), avg(columnname), sum(columnname), max(columnname), min(columnname) FROM tablename;
Simple and very usefull ;;)
Source: dari sini
Labels: Dunia IT
0 Comments:
Post a Comment
<< Home