Re: aggregate function for median calculation - Mailing list pgsql-general

From Thalis A. Kalfigopoulos
Subject Re: aggregate function for median calculation
Date
Msg-id Pine.LNX.4.21.0106191615250.24987-100000@aluminum.cs.pitt.edu
Whole thread Raw
In response to Re: aggregate function for median calculation  (Philip Hallstrom <philip@adhesivemedia.com>)
List pgsql-general
On Mon, 18 Jun 2001, Philip Hallstrom wrote:

> I missed the first part, but if the numbers are rows in a table, why not
> do something like:
>
> numrows = select count(*) from table1 where some_condition
> median_value = select some_col from table1 where some_condition order by
>                some_col limit numrows/2, 1
>
> (or something very close to that anyway).
>
> -philip

Because I'll be using this median() as an aggregate function and grouping by multiple attributes of different tables.
Soinstead of me doing the aggregation bookkeeping, I'd rather have it as a Pg aggr. function. 

cheers,
thalis

>
>
>
> On Mon, 18 Jun 2001, Alex Pilosov wrote:
>
> > On Mon, 18 Jun 2001, Thalis A. Kalfigopoulos wrote:
> >
> > > Hippl,
> > >     I'm interested in calculating the median of a set of numbers.
> > > The algorithm requires that all values are known in advance (ie stored
> > > in an array). So the question is: how can I store everything first in
> > > an array so I can later process it given that I'd like this to be an
> > > aggregate function. I thought of creating an aggregate function and
> > > have the state_function() gather all the values of a group in an array
> > > and the final_function() to do the actuall median calculation on this
> > > array. But the intermmediate state cannot hold multiple values in an
> > > array (can it?)  Any ideas on how to go with this?
> >
> > With current architecture, its kinda painful to implement such a function.
> > Your 'state' function should allocate (palloc) memory for each element
> > processed and then pfree it when you are done.
> >
> > -alex
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 6: Have you searched our list archives?
> >
> > http://www.postgresql.org/search.mpl
> >
>
>


pgsql-general by date:

Previous
From: Michael Meskes
Date:
Subject: Re: Embedded sql PREPARE statement
Next
From: "Thalis A. Kalfigopoulos"
Date:
Subject: Re: aggregate function for median calculation