sql >> Databáze >  >> RDS >> PostgreSQL

Postgres vybere všechny sloupce, ale seskupí je podle jednoho sloupce

Kdykoli si začnete myslet, že chcete lokalizovanou GROUP BY, měli byste začít přemýšlet o funkce oken místo toho.

Myslím, že toužíte po něčem takovém:

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

Možná budete chtít přidat něco do OBJEDNÁVKY, abyste také důsledně přerušili vazby, ale to by nezměnilo celkovou techniku.



  1. pomocí kopie v postgresql?

  2. Smyčka přes Array v PHP se vrátila z MySQL Query

  3. dotaz oracle k porovnání všech řádků se stejným ID v tabulce

  4. SET CONSTRAINTS ALL DEFERRED nefunguje podle očekávání