Twoje zapytanie jest interpretowane jako:
select distinct (ca.id) as id, acc.name as accName, . . .
To jest standardowe distinct oświadczenie. Jeśli chcesz tylko jeden wiersz na ca.id z wartościami z pierwszego wiersza (na podstawie order by ), a następnie użyj distinct on :
select distinct on (ca.id) ca.id, acc.name as accName, . . .