Re: Min and Max

From: Joel Burton <joel(at)joelburton(dot)com>
To: Sergio Oshiro <smoshiro(at)hotmail(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Min and Max
Date: 2002-12-02 18:46:56
Message-ID: 20021202184656.GC12953@temp.joelburton.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Fri, Nov 29, 2002 at 10:55:54AM -0800, Sergio Oshiro wrote:
> Hello, everybody!
>
> I've trouble to make a "simple"(?) query...
>
> The following table is an example:
>
> table: children
> id_father | child_name | child_age
> ----------+------------+------------
> 1 | John | 2
> 1 | Joe | 3
> 1 | Mary | 4
> 1 | Cristine | 4
> 2 | Paul | 1
> 2 | Stephany | 2
> 2 | Raul | 5
>
> How can I get the rows of the children name and its "father" such that
> they have the min child_ages? I expect the following rows as result:
>
> id_father | child_name | child_age
> ----------+------------+------------
> 1 | John | 2
> 2 | Paul | 1
>
> The same for the max child_ages...
>
> id_father | child_name | child_age
> ----------+------------+------------
> 1 | Mary | 4
> 1 | Cristine | 4
> 2 | Raul | 5

select distinct on (id_father) * from children order by id_father,
child_age;

will give your results

select distinct on (id_father) * from children order by id_father,
child_age desc;

will give the oldest children, but it doesn't list both mary and
christine -- it arbitrarily lists mary (you could add child_name to sort
order so it wouldn't be abitrary, but it still won't list both).

this is a weird use of distinct on, though, and perhaps cheating. a
canonical, if slower solution (and one that fixes the tie for oldest
child) is:

select id_father,
child_name,
child_age
from children c1
where not exists (select *
from children c2
where c1.id_father=c2.id_father
and c2.child_age > c1.child_age);

swap the '>' to '<' for youngest.

- J.
--

Joel BURTON | joel(at)joelburton(dot)com | joelburton.com | aim: wjoelburton
Independent Knowledge Management Consultant

In response to

  • Min and Max at 2002-11-29 18:55:54 from Sergio Oshiro

Browse pgsql-sql by date

  From Date Subject
Next Message Joel Burton 2002-12-02 19:01:24 Re: Accumulative Queries?
Previous Message Casey Allen Shobe 2002-12-02 18:46:38 Combining queries while preserving order in SQL - Help!