From: | Adam Witney <awitney(at)sgul(dot)ac(dot)uk> |
---|---|
To: | David Orme <d(dot)orme(at)imperial(dot)ac(dot)uk>, pgsql-novice <pgsql-novice(at)postgresql(dot)org> |
Subject: | Re: Median/Quantile Aggregate |
Date: | 2005-05-17 16:34:16 |
Message-ID: | BEAFDB98.46330%awitney@sgul.ac.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
Using PL/R, two examples... One for median and inter-quartile range
CREATE OR REPLACE FUNCTION r_median(_float8) RETURNS float AS '
median(arg1)
' LANGUAGE 'plr';
CREATE AGGREGATE median (
sfunc = plr_array_accum,
basetype = float8,
stype = _float8,
finalfunc = r_median
);
CREATE OR REPLACE FUNCTION r_iqr(_float8) RETURNS float AS '
IQR(arg1)
' LANGUAGE 'plr';
CREATE AGGREGATE iqr (
sfunc = plr_array_accum,
basetype = float8,
stype = _float8,
finalfunc = r_iqr
);
> Hi,
>
> I know people have asked about this before but I can't find a working
> solution on the web - I've found code for specific instances of
> calculating medians but I need a general aggregate function for
> calculating medians, or more generally any given quantile.
>
> The kind of thing I need to do is to be able to extract the median
> value from a table of 4 million rows, aggregating across more than
> 50,000 grouping values - the sort of thing that is really easy to do
> for averaging:
>
> SELECT grid_id, avg(rs) FROM behr_grid GROUP BY grid_id;
>
> From what I've seen on the web, I know this isn't trivial or
> necessarily fast but at the moment I'm reading the data out into
> something that calculates medians and then matching it back in and
> this doesn't feel particularly elegant!
>
> Any suggestions gratefully received...
>
> Thanks,
> David
>
>
>
> ---------------------------------------
> Dr. David Orme
>
> Department of Biological Sciences
> Imperial College London
> Silwood Park Campus
> Ascot, Berkshire SL5 7PY UK.
>
> Tel: +44 (0)20 759 42358
> Fax: +44 (0)20 759 42339
> e-mail: d(dot)orme(at)imperial(dot)ac(dot)uk
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
From | Date | Subject | |
---|---|---|---|
Next Message | David Orme | 2005-05-17 16:43:55 | Re: Median/Quantile Aggregate |
Previous Message | Tom Lane | 2005-05-17 16:31:36 | Re: Median/Quantile Aggregate |