sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres välj alla kolumner men gruppera efter en kolumn

Varje gång du börjar tänka att du vill ha en lokaliserad GROUP BY bör du börja tänka på fönsterfunktioner istället.

Jag tror att du är ute efter något sånt här:

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

Du kanske vill lägga till något i ORDER BY för att konsekvent också bryta banden, men det skulle inte förändra den övergripande tekniken.



  1. Korrekt hantering av långa data i Hibernate

  2. Fel 1329:Inga data - noll rader hämtade, markerade eller bearbetade - även när allt är rätt gjort

  3. Kan Oracles standardtidsgräns för objektlås ändras?

  4. Ställ in NLSLANG utan tusenseparator