Postgres specifik (och snabbaste) lösning:
select distinct on (out_id) *
from foo
order by out_id, id desc;
Standard SQL-lösning som använder en fönsterfunktion (näst snabbast)
select id, x_part, y_part, out_id, out_idx
from (
select id, x_part, y_part, out_id, out_idx,
row_number() over (partition by out_id order by id desc) as rn
from foo
) t
where rn = 1
order by id;
Observera att båda lösningarna endast returnerar varje id
en gång, även om det finns flera out_id
värden som är desamma. Om du vill att alla ska returneras, använd dense_rank()
istället för row_number()