PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgres seleciona todas as colunas, mas agrupa por uma coluna


Sempre que você começar a pensar que deseja um GROUP BY localizado, deve começar a pensar em funções da janela em vez de.

Acho que você está atrás de algo assim:
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

Você pode querer adicionar algo ao ORDER BY para quebrar os empates de forma consistente, mas isso não alteraria a técnica geral.