我如何 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 函数在某种程度上已被弃用 - 或者至少不被鼓励。
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 函数在某种程度上已被弃用 - 或者至少不被鼓励。