Re: Re: Restriction by grouping problem.

From: Philip Warner <pjw(at)rhyme(dot)com(dot)au>
To: "Jeff Barrett" <jbarrett(at)familynetwork(dot)com>, pgsql-sql(at)postgresql(dot)org
Subject: Re: Re: Restriction by grouping problem.
Date: 2001-07-27 01:47:13
Message-ID: 3.0.5.32.20010727114713.02793960@mail.rhyme.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql


A way to do this is:

Select GETFILE From
(Select Min(DATETIME),SID From LOGS Group by SID) as MDT,
LOGS L
Where
L.SID = MDT.SID
And L.DATETIME = MDT.DATETIME

But this fails if there are more than one row for a given SID/DATETIME pair
(doe you have a unique index on them?).

Alternatively, you could try:

Select
(Select GETFILE From LOGS L Where L.SID = S.SID
Order By DATETIME Asc Limit 1) as GETFILE
From
(Select Distinct SID From LOGS) as S

...the FROM statement would be a lot nicer if your had a table of SIDs, or
at least had a good way of generating the list of SIDs.

[Not sure if I got the PG dialect right]

At 18:03 26/07/01 -0400, Jeff Barrett wrote:
>
>Logs table has a primary key of logid (int4) and serveral columns, of which
>I am deling with sid (text), getfile (text), and datetime (int4). Now a
>select getfile, datetime, logid from logs where sid = onevalue; would return
>a set of rows for that sid, the row I want is for the one with the smallest
>aka min(datetime) and I want this for every row in the table.

----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 0500 83 82 82 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2001-07-27 05:20:26 Re: Meta integrity
Previous Message Jeff Barrett 2001-07-26 22:03:35 Re: Restriction by grouping problem.