I have the following table
x
CREATE TABLE arr(
id int,
arr_r int []
);
INSERT INTO arr(arr_r ) VALUES
( ARRAY [1 ,2 ,3]) ,
( ARRAY [4 ,3]) ,
( ARRAY [7 ,6]) ,
( ARRAY [2 ,2]);
and I want to output the arrays in the table which are sorted in ascending order. An output would be
1, 2, 3
2, 2
I tried some stuff with array_agg and an order by inside the array_agg but that did not work. How would I go about getting the desired output?
Advertisement
Answer
You can install the intarray extension, then you can do:
select *
from arr
where arr_r = sort(arr_r);
If you don’t want to install the extension, you can create your own sort function:
create function sort(p_input int[])
returns int[]
as
$$
select array_agg(i order by i)
from unnest(p_input) as a(i);
$$
language sql
immutable;