Re: Extract only maximum date from column - Mailing list pgsql-general

From Alban Hertroys
Subject Re: Extract only maximum date from column
Date
Msg-id BE035292-C9E3-4A46-9DD1-7026A16292DF@gmail.com
Whole thread Raw
In response to Extract only maximum date from column  (Rich Shepard <rshepard@appl-ecosys.com>)
List pgsql-general
> On 4 Dec 2025, at 20:55, Rich Shepard <rshepard@appl-ecosys.com> wrote:
>
> I want the script to extract only the maximum `next_contact' date and
> haven't learned how to do this from my reading of web sites.
>
> The script:
>
> select p.person_nbr, p.company_nbr, c.next_contact
> from people as p, contacts as c
> where c.next_contact >= '2025-11-01'
> group by p.person_nbr, p.company_nbr, c.next_contact
> order by p.person_nbr, p.company_nbr, max(c.next_contact);
>
> returns all contacts rather than only the latest one.
>
> Is using a sub-select the proper way?
>
> TIA,
>
> Rich

That looks like a classical case for a correlated subquery with WHERE NOT EXISTS.

Something like:

select p.person_nbr, p.company_nbr, c.next_contact
from people as p
join contacts as c
on -- I’m really missing some kind of relation between p and c here, I think that’s relevant
where c.next_contact >= ‘2025-11-01’
-- make sure there’s no later contact
and not exists (
    select 1 -- the value is irrelevant, as long as there’s no later instance of a contact
    from contacts c2
    where c2.next_contact >= ‘2025-11-01’
    and c2.next_contact > c.next_contact
)

P.S. My mail-client tried to outsmart me in this reply (in no small part) and I just got back from the pub, so I can’t
exactlyguarantee correctness of the above, but the principal idea should be solid. 

Alban Hertroys
--
There is always an exception to always.







pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Extract only maximum date from column