我如何 select 来自 postgresql 9.4 中数组列的顶部数字

How can i select top numbers from array column in postgresql 9.4

create table foo_table(foo_id int, foo_array int[], some_other_column text)

insert into foo_table(foo_array) values (ARRAY[1,3,8,32,55])
insert into foo_table(foo_array) values (ARRAY[2,4,9,31,38,92,99])
insert into foo_table(foo_array) values (ARRAY[5,12,15,35,47])
insert into foo_table(foo_array) values (ARRAY[6,7,13])

foo_array 数组的元素数量可变。 所有数组元素都是唯一的,所有数组中的所有数字也将是唯一的。

我想知道如何才能 select 从 foo_array 列中取出最大的 5 个数字,在这种情况下,它们是 99、92、55、47、38。

select t.nr
from foo_table
  cross join lateral unnest(foo_array) as t(nr)
order by nr desc
limit 5  

或者更短一些:

select unnest(foo_array) nr
from foo_table
order by nr desc
limit 5  

在 select 列表中使用 set-returning 函数在某种程度上已被弃用 - 或者至少不被鼓励。