Neo4j: как сложить элемент массива с предыдущим? - PullRequest
1 голос
/ 26 июня 2019

Я использую Cypher с Neo4j, и мне нужно суммировать элементы каждого массива с суммой между предыдущими элементами.

В следующем примере:

[1,2,3,4,5]

Я бы получил следующий результат:

[1,3,6,10,15]

Я пытаюсь таким образом:

[i in range(0,size(array)-1) | array[i]+array[i-1]]

Но это не работает. Любой совет для меня?

1 Ответ

2 голосов
/ 26 июня 2019

Ваш запрос вычисляет сумму только двух элементов (текущего и предыдущих элементов) из исходного массива.

Вам нужна сумма всех предыдущих элементов, для этого вам нужно сначала получить список всех предыдущих элементов, включая текущий, а затем суммировать все.

Для расчета суммы всех элементов вы можете использовать функцию уменьшения .

Вы можете изменить свой запрос следующим образом:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...