У меня есть одномерный массив значений в Postgres, например:
[ "1", "4", "2", "5", "3", "6" ]
Есть ли способ изменить это на двумерный массив?
[ ["1", "4"], ["2", "5"], ["3", "6"] ]
Теперь размеры 3х2 вместо 1х6.
Используйте два агрегата:
select array_agg(arr order by ord) from ( select (ord+ 1) / 2 as ord, array_agg(arr) as arr from unnest(array[1,4,2,5,3,6]) with ordinality as u(arr, ord) group by 1 ) s
или конструктор массива:
select array( select array_agg(unnest) from unnest(array[1,4,2,5,3,6]) with ordinality group by (ordinality+ 1) / 2 order by (ordinality+ 1) / 2 )
Db <> fiddle.