Encontrei o artigo "Faster array building with array_agg" que comenta como é possível ter um array de valores distintos juntamente com uma função de agregação no banco de dados. Um exemplo disto é quando contamos todos os pontos que estão contidos em um polígono e queremos ter como resposta o identificador do pontos que foram selecionados ou utilizados.
Neste caso temos:
select count(*), array_agg(gid) as todos_ids from focos;
Outros exemplos podem ser vistos em:
http://www.postgisonline.org/