try making it in two steps,using temp table maybe. how many rows does the subselect generate ?
pgsql-general by date:
Соглашаюсь с условиями обработки персональных данных