如何从postgresql 9.4中的数组列中选择顶部数字

时间:2016-01-12 22:42:39

标签: arrays database postgresql sorting 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数组将具有可变数量的元素。 所有数组元素都是唯一的,所有数组中的所有数字也都是唯一的。

我想知道如何从foo_array列中选择最大的5个数字,在这种情况下将是99,92,55,47,38。

1 个答案:

答案 0 :(得分:1)

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  

在选择列表中使用set-returns函数有点不赞成 - 或者至少不鼓励使用。