【发布时间】:2017-11-05 18:24:53
【问题描述】:
我需要将 2 个数组的每个元素相乘并投影一列,该列是一个数组,每个元素都是乘积结果。
例子:
select * from vetor_query;
返回:
query_id |pesos |
---------|----------------------------------------------------------------------------------------------------|
1 |{2.0000,0.4150,2.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000} |
还有查询:
select * from vetor_documento;
返回:
doc |pesos |
-------|----------------------------------------------------------------------------------------------------|
d1.txt |{3.0000,0.8301,4.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000} |
d2.txt |{2.0000,0.0000,0.0000,0.0000,2.0000,2.0000,2.0000,2.0000,2.0000,0.0000,0.0000,0.0000,0.0000,0.0000} |
d3.txt |{0.0000,1.0729,0.0000,0.0000,0.0000,0.0000,2.0000,1.0000,0.0000,2.0000,2.0000,0.0000,0.0000,0.0000} |
d4.txt |{0.0000,1.0729,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,5.1699,4.0000,4.0000} |
我需要结合两个查询(交叉连接)并为每个 doc 和 query_id 生成内部产品的结果数组。
我的第一次尝试是这个:
select vq.query_id, vd.doc, unnest(vq.pesos) * unnest(vd.pesos)
from vetor_query vq
cross join vetor_documento vd;
但是,它会产生这个错误:
函数和运算符最多可以接受一个集合参数
【问题讨论】:
标签: sql arrays postgresql unnest