sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres selecciona todas las columnas pero agrupa por una columna

Cada vez que comience a pensar que desea un GRUPO POR localizado, debe comenzar a pensar en funciones de ventana en su lugar.

Creo que buscas algo como esto:

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

Es posible que desee agregar algo a ORDER BY para romper también los empates de manera consistente, pero eso no alteraría la técnica general.