Eine Möglichkeit besteht darin, zuerst nach x
zu gruppieren und verwenden Sie array_agg()
um die inneren Arrays zu erhalten. Dann wieder mit array_agg()
aggregieren um die inneren Arrays in ein äußeres Array zu bekommen.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;