如何获得三维阵列的最小值或最大值?

时间:2014-02-05 17:38:51

标签: sql arrays postgresql aggregate-functions unnest

如何在PostgreSQL中找到三维数组的最大(或最小)元素?

是否有任何功能或更快的方式而不是这个?:

min:= A[1][1][1];

for i IN 1..9 LOOP
for j IN 1..9 LOOP
for k IN 1..9 LOOP
        min := least(min,A[i][j][k]);
END LOOP;
END LOOP;
END LOOP;

1 个答案:

答案 0 :(得分:3)

使用unnest()

SELECT min(elem) AS min_elem
FROM   unnest(my_arr) AS elem
无论数组维度如何,

unnest()都会返回一组 base 元素。然后你需要的只是聚合函数min()

作为plpgsql赋值(因为你似乎正在使用plpgsql):

SELECT min(elem) INTO my_variable
FROM   unnest(my_arr) AS elem