sql >> Database >  >> RDS >> PostgreSQL

Postgres selecteer alle kolommen maar groepeer op één kolom

Elke keer dat je begint te denken dat je een gelokaliseerde GROUP BY wilt, moet je beginnen na te denken over vensterfuncties in plaats daarvan.

Ik denk dat je op zoek bent naar iets als dit:

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

Je zou misschien iets aan de ORDER BY willen toevoegen om ook consequent de banden te verbreken, maar dat zou de algehele techniek niet veranderen.



  1. Gerealiseerde weergaven vernieuwen met gelijktijdigheid

  2. Selecteer gebruikers die zowel een hond als een kat hebben

  3. BLOB-gegevens geretourneerd in MySQL met behulp van AES_DECRYPT met ORDER-clausule

  4. Selecteer waar de eerste letter in een bereik ( PostgreSQL )