PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres wählt alle Spalten aus, gruppiert aber nach einer Spalte

Jedes Mal, wenn Sie anfangen zu denken, dass Sie ein lokalisiertes GROUP BY wollen, sollten Sie über Fensterfunktionen stattdessen.

Ich glaube, Sie wollen so etwas:

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

Vielleicht möchten Sie etwas zu ORDER BY hinzufügen, um auch Bindungen konsequent zu lösen, aber das würde die Gesamttechnik nicht ändern.