Jednou z možností je nejprve seskupit podle x
a použijte array_agg()
získat vnitřní pole. Poté znovu agregujte pomocí array_agg()
abyste dostali vnitřní pole do jednoho vnějšího pole.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;