Une possibilité est de commencer par grouper par x
et utilisez array_agg()
pour obtenir les tableaux internes. Ensuite, agrégez à nouveau en utilisant array_agg()
pour obtenir les tableaux internes dans un tableau externe.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;