Hallo,
Ich benutze eine median funktion vom wiki: Aggregate Median - PostgreSQL wiki
Die zweite um genau zu sein. Wenn ich diese aber anwende, bekomme ich folgende Fehler:
FEHLER: Funktion median(integer) ist nicht eindeutig
LINE 35: select median(count_inclusions) from metasamples where id < ...
^
HINT: Konnte keine beste Kandidatfunktion auswählen. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
********** Fehler **********
FEHLER: Funktion median(integer) ist nicht eindeutig
SQL Status:42725
Hinweis:Konnte keine beste Kandidatfunktion auswählen. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
Zeichen:659
Hier ist der gesamte Code:
DROP AGGREGATE IF EXISTS median(anyelement);
DROP FUNCTION IF EXISTS _final_median(anyarray);
CREATE OR REPLACE FUNCTION _final_median(anyarray)
RETURNS float8 AS
$$
WITH q AS
(
SELECT val
FROM unnest($1) val
WHERE VAL IS NOT NULL
ORDER BY 1
),
cnt AS
(
SELECT COUNT(*) AS c FROM q
)
SELECT AVG(val)::float8
FROM
(
SELECT val FROM q
LIMIT 2 - MOD((SELECT c FROM cnt), 2)
OFFSET GREATEST(CEIL((SELECT c FROM cnt) / 2.0) - 1,0)
) q2;
$$
LANGUAGE sql IMMUTABLE;
CREATE AGGREGATE median(anyelement) (
SFUNC=array_append,
STYPE=anyarray,
FINALFUNC=_final_median,
INITCOND='{}'
);
select median(count_inclusions) from metasamples where id < 18;
metasamples.count_inclusions ist natürlich ein int. Mit double werten funktioniert die Funktion ohne Probleme. Bitte um Hilfe!!
PostgreSQL Version 9.1.