Re: Need help with what I think is likely a simple query - for each distinct val, return only one record with the most recent date.

From: Reid Thompson <jreidthompson(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Need help with what I think is likely a simple query - for each distinct val, return only one record with the most recent date.
Date: 2011-09-13 01:54:05
Message-ID: 4E6EB7BD.6090208@ateb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Ack -- i flubbed the subject and sample.
The sample data should be

val val2 date
1 1 2011-01-01
2 2 2011-01-02
3 3 2011-01-03
4 1 2011-01-04
5 2 2011-01-05
5 3 2011-01-01
4 1 2011-01-02
6 2 2011-01-03
4 3 2011-01-04
3 1 2011-01-05
2 2 2011-01-06
4 3 2011-01-07
6 1 2011-01-08
4 2 2011-01-09
5 3 2011-01-01
2 1 2011-01-02
4 2 2011-01-03
2 3 2011-01-04
1 1 2011-01-01
2 2 2011-01-02
3 3 2011-01-03
4 1 2011-01-04
3 2 2011-01-05
1 3 2011-01-01
2 1 2011-01-02
3 2 2011-01-03
4 3 2011-01-04
5 4 2012-01-01

resultset:

1 3 2011-01-01
2 2 2011-01-06
3 1 2011-01-05
4 2 2011-01-09
5 2 2011-01-05
6 1 2011-01-08

where any one of these 3

1 1 2011-01-01
1 1 2011-01-01
1 3 2011-01-01

or any one of these 2
3 1 2011-01-05
3 2 2011-01-05

are suitable for val = 1, val = 3 respectively.

On 9/12/2011 8:54 PM, Reid Thompson wrote:
> Could someone point me in the right direction..
> Thanks - reid
>
> Given the example data,
> how do I write a query that will give me the resultset:
>
> 1 2011-01-01
> 2 2011-01-06
> 3 2011-01-05
> 4 2011-01-09
> 5 2011-01-05
> 6 2011-01-08
>
> I.E. for each distinct val, return the record with the most recent date.
>
> ex data
> val date
> 1 2011-01-01
> 2 2011-01-02
> 3 2011-01-03
> 4 2011-01-04
> 5 2011-01-05
> 5 2011-01-01
> 4 2011-01-02
> 6 2011-01-03
> 4 2011-01-04
> 3 2011-01-05
> 2 2011-01-06
> 4 2011-01-07
> 6 2011-01-08
> 4 2011-01-09
> 5 2011-01-01
> 2 2011-01-02
> 4 2011-01-03
> 2 2011-01-04
> 1 2011-01-01
> 2 2011-01-02
> 3 2011-01-03
> 4 2011-01-04
> 3 2011-01-05
> 1 2011-01-01
> 2 2011-01-02
> 3 2011-01-03
> 4 2011-01-04
> 5 2011-01-01
> -----------------------------------
>
> $ cat sampledata|sort -k1,2
> 1 2011-01-01
> 1 2011-01-01
> 1 2011-01-01
> 2 2011-01-02
> 2 2011-01-02
> 2 2011-01-02
> 2 2011-01-02
> 2 2011-01-04
> 2 2011-01-06
> 3 2011-01-03
> 3 2011-01-03
> 3 2011-01-03
> 3 2011-01-05
> 3 2011-01-05
> 4 2011-01-02
> 4 2011-01-03
> 4 2011-01-04
> 4 2011-01-04
> 4 2011-01-04
> 4 2011-01-04
> 4 2011-01-07
> 4 2011-01-09
> 5 2011-01-01
> 5 2011-01-01
> 5 2011-01-01
> 5 2011-01-05
> 6 2011-01-03
> 6 2011-01-08
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message John R Pierce 2011-09-13 01:58:58 9.0, 9.1 RPM based parallel execution?
Previous Message Phoenix Kiula 2011-09-13 01:48:23 Foreign key check only if not null?