【问题标题】:How can i select top numbers from array column in postgresql 9.4如何从 postgresql 9.4 中的数组列中选择前几位
【发布时间】:2016-01-12 22:42:39
【问题描述】:
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。

【问题讨论】:

    标签: arrays database postgresql sorting postgresql-9.4


    【解决方案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-returning 函数有点不赞成 - 或者至少不鼓励。

    【讨论】:

    • 因为我想不出任何其他方式 - 是的,这是最快的方式(因为它是唯一的方式)。但不要指望这会非常快 - 但这是您不规范化数据所付出的代价。
    猜你喜欢
    • 2021-12-18
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    相关资源
    最近更新 更多