【发布时间】:2018-06-23 11:54:57
【问题描述】:
我有一个表 A 与 n 行 (200+) 和不同的数字列。
我有一个表B 和m 行(100K+)和一个名为multipliers 的列,它是数组类型(REAL[])。对于B 中的每一行,这个数组的长度是n,即。 A 中每个数值变量的乘数。对数组进行排序以匹配A 中id 字段的字母顺序
表A
id | values_1 | values_2
---|----------|-------------
1 | 11.2 | 10.2
2 | 21.9 | 12.5
3 | 30.0 | 26.0
4 | 98.0 | 11.8
表B
id | multipliers
--------|-------------
dafcec | {2,3,4,9}
nkjhbn | {0,0,1,5}
ccseff | {1,2,0,5}
ddeecc | {0,0,0,1}
我需要一个返回 SUM( multipliers * values_1 ) 的查询。
像这样:
b.id | sum(b.multipliers*a.value_1)
--------|----------------------------------
dafcec | 2*11.2 + 3*21.9 + 4*30.0 + 9*98.0
nkjhbn | 0*11.2 + 0*21.9 + 1*30.0 + 5*98.0
ccseff | 1*11.2 + 2*21.9 + 0*30.0 + 5*98.0
ddeecc | 0*11.2 + 0*21.9 + 0*30.0 + 1*98.0
我尝试了不同的子查询,LATERAL joins 和 UNNEST,但我无法获得有效的结果。
有什么提示吗?谢谢!
【问题讨论】:
标签: sql arrays postgresql lateral-join