On Fri, 12 Oct 2001 12:38:12 -0700
"Josh Berkus" wrote:

> For those whose stats terminology is rusty, the "median" is the "middle"
> value in a distribution.  For example, if we had the following data:
> 
> Table ages
> person                age
> Jim           21
> Rusty         24
> Carol         37
> Bob           62
> Leah          78
> 
> Our Median would be Carol's age, 37.  This is a different figure from
> the Mean, or Average, which is 44.4.  Using the combination of the Mean
> and the Median you can do all kinds of interesting statistical analysis.
> 

In such case of this, there needs "nextval" in a query to deal with
a large number of rows. I think the following query, is not smart, 
will return the necessary rows (or an average of the rows). But even
so it may need considerable time...


-- (on 7.1.3)
create sequence seq_ages start 1;

select a1.age, a1.rank   -- or select avg(a1.age)
  from (select a0.person, a0.age, (nextval('seq_ages') - 1) as rank
          from (select *, setval('seq_ages',1)   -- to reset a sequence
                  from ages
                  order by age   -- this insignificant "order by" is
                                 --  needed in order to work "setval"
                ) as a0
           order by a0.age
        ) as a1
  where exists (select * from ages
                   where a1.rank >= (select (count(*)+1)/2 from ages)
                     and a1.rank <= (select  count(*)/2+1  from ages)
                )
;



Regards,
Masaru Sugawara


---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to