Một khả năng là nhóm đầu tiên theo x
và sử dụng array_agg()
để lấy các mảng bên trong. Sau đó, tổng hợp lại bằng cách sử dụng array_agg()
để chuyển các mảng bên trong thành một mảng bên ngoài.
SELECT array_agg(a ORDER BY x)
FROM (SELECT x,
array_agg(val ORDER BY y) a
FROM t1
GROUP BY x) t;