两个阵列子集的总和
我是Postgres阵列的新手。
我需要修改c数组的前4个元素
。公式为c [1:4] = a [1:4] + b [1:4] 该计算是通过group_name尺寸完成的,
是否有一种优雅的方法可以做到这一点,也许没有加入?
insert into the_table values
(1,'group 1', 'A', '{1,2,3,4,5}'),
(2,'group 1', 'B', '{10,20,30,40,50}'),
(3,'group 2', 'A', '{-1,-2,-3,-4,-5}'),
(4,'group 2', 'B', '{-10,-20,-30,-40,-50}'),
(5,'group 1', 'C', '{0,0,0,0,0}'),
(6,'group 2', 'C', '{0,0,0,0,0}');
输入数据:
ID | group_name | var | val | |
---|---|---|---|---|
1 | 组1 | A | 1,2,3,4,5 | |
2 | 组1 | B | 10,20,30,40,50 | |
3 | 组1 | C | 0,0,0,0,0,0 | |
4 | 组2 A组2 | A | -1,-2,-3,-4,-5 | |
5 | 组2 | B | -10,-20,-30,-40,-50 | |
6 | 组2 | C | 0,0,0,0,0,0,0 |
输出数据:
ID | Group_Name | VAL | 组2 A | |
---|---|---|---|---|
1 | 组1 | A | 1,2,3,4,5 | |
2 | 组1 | B | 10,20,30,40,50 | |
3 | 组1 | C | 11,22,33,44,0 | |
4 | 组2 | A | -1,-2 ,-3,-4,-5 | |
5 | 组2 | B | -10,-20,-30,-40,-50 | |
6 | 组2 | C | -11,-22,-33,-44,0 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要一个以给定的函数总和数组。
使用此功能,更新看起来非常优雅:
在
You need a function that sums arrays on a given basis.
With this function the update looks quite elegant:
Test it in db<>fiddle.
Postgres中的阵列没有分段操作。您不会遇到一些不符合阵列的加入,通过索引加入并将它们汇总回:
(在线演示)
There are no piecewise operations on arrays in Postgres. You won't get around a few joins that unnest the arrays, join by index, and aggregate them back:
(online demo)