gpt4 book ai didi

arrays - 在 RDBM 中有效地保存可求和数组值

转载 作者:行者123 更新时间:2023-11-29 13:21:06 28 4
gpt4 key购买 nike

我有一个数据集,我们在其中跟踪参与度的百分比(因此 8 人的活跃度为 38%,7 人的活跃度为 39%,等等)。这给出了一个包含 100 个值的数组,并用整数填充。

我需要将其存储在 postgres 表中。唯一/主要的要求是我需要能够对每个索引的值求和以形成一个新数组。示例:

Row 1: [5, 3, 5, ... 7]
Row 2: [2, 5, 3, ... 1]
Sum: [7, 8, 8, ... 8]

保存这些的天真的方法是 100 个单独的 (BIG)INT 列,这将允许您对多行中每列的值求和。但是,这会使表格变得非常宽(并且看起来不是最有效的方法)。我查看了 (BIG)INT[100] 列,但我似乎无法找到一种好的、 native 的方法来对这些值求和。 json(b) 列(使用 native JSON 数组)也是如此。

我是不是忽略了什么?有没有一种好的、有效的方法可以在不完全膨胀表格的情况下做到这一点?

最佳答案

使用 unnest() with ordinality 的解决方案:

with the_table(intarr) as (
values
(array[1, 2, 3, 4]),
(array[1, 2, 3, 4]),
(array[1, 2, 3, 4])
)

select array_agg(sum order by ordinality)
from (
select ordinality, sum(unnest)
from the_table,
lateral unnest(intarr) with ordinality
group by 1
) s;

array_agg
------------
{3,6,9,12}
(1 row)

关于arrays - 在 RDBM 中有效地保存可求和数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41698527/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com