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 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 > ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster