Per preservare la stessa dimensione del tuo array non puoi usare direttamente array_agg()
, quindi prima unnest
i tuoi array e applica distinct
per rimuovere i duplicati (1). Nella query esterna questo è il momento di aggregare. Per preservare i valori, l'ordinamento include order by
all'interno della funzione aggregata:
select time, array_agg(col order by col) as col
from (
select distinct time, unnest(col) as col
from yourtable
) t
group by time
order by time
(1) Se non hai bisogno della rimozione dei duplicati, rimuovi semplicemente distinct
parola.