Satu kemungkinan adalah mengelompokkan pertama dengan x
dan gunakan array_agg()
untuk mendapatkan array dalam. Kemudian agregat lagi menggunakan array_agg()
untuk mendapatkan larik dalam menjadi satu larik luar.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;