Во-первых, вам не нужен union, используйте
join. Во-вторых, группировка делается с помощью
group by. Для получения массива сгруппированных значений используйте агрегатную функцию
array_agg().
select
t1.name, array_agg(t2.skills)
from table1 as t1
inner join table2 as t2
using (id)
group by t1.name;
sqlfidle