sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres vælg alle kolonner, men grupper efter én kolonne

Hver gang du begynder at tænke på, at du vil have en lokaliseret GROUP BY, bør du begynde at tænke på vinduefunktioner i stedet.

Jeg tror, ​​du er ude efter noget som dette:

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 vil måske tilføje noget til BESTIL BY for også konsekvent at bryde båndene, men det ville ikke ændre den overordnede teknik.



  1. Sådan får du Record med Max Value i MySQL

  2. Alternativ til lead lag-funktion i SQL Server 2008

  3. PostgreSQL ILIKE-forespørgsel med SQLAlchemy

  4. Fejl:Kan ikke stille forespørgsel i kø efter fatal fejl i mysql node