Если может быть несколько строк для одного и того же номера версии, тогда используйте оконную функцию RANK
в cte и выберите строки, где ранг равен 1
SELECT id, c1, c2, c3, c4
FROM (
SELECT
*
, RANK() OVER (PARTITION BY id ORDER BY c4 DESC) c4rank
FROM t
) ranked
WHERE c4rank = 1
AND id = 'something'
Если вы хотите самую последнюю версиюдля всех идентификаторов просто опустите условие id = 'something'
из вышеприведенного оператора.
Если для данного номера версии может быть только 1 строка, используйте order by и ограничьте 1
SELECT id, c1, c2, c3, c4
FROM t
WHERE id = 'something'
ORDER BY c4 DESC
LIMIT 1
Если вам нужна самая последняя версия для всех идентификаторов, в каждой комбинации (идентификатор, версия) может быть только 1 строка
SELECT DISTINCT ON (id) id, c1, c2, c3, c4
FROM t
WHERE id = 'something'
ORDER BY id, c4 DESC