Una posibilidad es agrupar primero por x
y usa array_agg()
para obtener las matrices internas. Luego agregue nuevamente usando array_agg()
para obtener las matrices internas en una matriz externa.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;