PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres seleziona tutte le colonne ma raggruppa per una colonna

Ogni volta che inizi a pensare di volere un GROUP BY localizzato dovresti iniziare a pensare a funzioni finestra invece.

Penso che tu stia cercando qualcosa del genere:

select unit_id, time, diag
from (
    select unit_id, time, diag,
           rank() over (partition by unit_id order by time desc) as rank
    from diagnostics.unit_diag_history
) as dt
where rank = 1

Potresti voler aggiungere qualcosa a ORDER BY per rompere anche i pareggi in modo coerente, ma ciò non altererebbe la tecnica generale.