Поправьте меня, если я ошибаюсь, но вы хотите один результат на "n" с наибольшим значением из "r"?
MATCH (n)-[r:R1]->(c)
WHERE r.coauthors = false
WITH n, r ORDER BY r.value DESC
WITH n, head(collect(r)) AS highR
RETURN n.name, highR.value ORDER BY n.campus, highR.value DESC
Это приведет вас в порядок и выберет первое head(collect(r))
после первого выполнения ORDER BY
. Тогда вам просто нужно вернуть значения, которые вы хотите. Проверьте Функции агрегации Neo4j для некоторой документации о том, как работают функции агрегирования. Удачи!
Кроме того, если есть метка, которая есть у всех "n", вы должны добавить ее в свой MATCH: MATCH (n:Person)
.... это поможет ускорить ваш запрос!