我正在将Cypher与Neo4j结合使用,我需要将每个数组元素与先前元素之间的总和相加。
使用以下示例:
[1,2,3,4,5]
我会得到以下结果:
[1,3,6,10,15]
我正在尝试这种方式:
[i in range(0,size(array)-1) | array[i]+array[i-1]]
但是它不起作用。 有什么建议吗?
答案 0 :(得分:2)
您的查询仅计算原始数组中两个元素(当前元素和先前元素)的总和。
您需要的是所有先前元素的总和,为此,您需要首先获取所有先前元素(包括当前元素)的列表,然后将所有元素求和。
要计算所有元素的总和,可以使用reduce function。
您可以按以下方式修改查询:
WITH [1,2,3,4,5] as array
WITH [i IN range(0,size(array)-1) | reduce(total=0, num IN array[0..i+1] | total + num) ] AS new_array
RETURN new_array