我需要将数组中的一个元素和之前的元素相加,然后用这个元素创建一个新的数组。现在,我以手动方式使用以下代码:
match (a:User)
with collect(a.capital) as cap
with cap as cap, length(cap) as len
return cap[0],
cap[0]+cap[1],
cap[0]+cap[1]+cap[2],
cap[0]+cap[1]+cap[2]+cap[3],
cap[0]+cap[1]+cap[2]+cap[3]+cap[4],
cap[0]+cap[1]+cap[2]+cap[3]+cap[4]+cap[5],
cap[0]+cap[1]+cap[2]+cap[3]+cap[4]+cap[5]+cap[6],
len但是我需要使用一个查询Cypher来对不同长度的数组执行这个操作。
发布于 2018-11-08 12:29:54
Cypher具有reduce函数:
WITH [12,28,74,45] AS cap
RETURN reduce(x = 0, v IN cap | x + v)
// 159您还可以使用APOC收集函数:
WITH [12,28,74,45] AS cap
RETURN apoc.coll.sum(cap)
// 159.0更新
WITH [12,28,74,45] AS cap
UNWIND range(1, size(cap)) AS i
WITH apoc.coll.sum(cap[0..i-1])
+ apoc.coll.sum(cap[0..i]) AS sum
RETURN collect(sum)结果:
╒═══════════════════════╕
│"collect(sum)" │
╞═══════════════════════╡
│[12.0,52.0,154.0,273.0]│
└───────────────────────┘发布于 2018-11-08 13:46:24
谢谢,我在DB上试过了,它正在工作:
WITH [12,28,74,45] AS cap
UNWIND range(1, size(cap)) AS i
WITH apoc.coll.sum(cap[0..i]) AS sum
RETURN collect(sum)https://stackoverflow.com/questions/53207560
复制相似问题