PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgres sélectionne toutes les colonnes mais groupe par une colonne

Chaque fois que vous commencez à penser que vous voulez un GROUP BY localisé, vous devriez commencer à penser à Fonctions de fenêtre à la place.

Je pense que vous cherchez quelque chose comme ça :

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

Vous voudrez peut-être ajouter quelque chose à ORDER BY pour rompre également les égalités, mais cela ne modifiera pas la technique globale.