Вы можете получить сумму коллекции числовых значений с SUM
, например, вы можете запустить его на своем предложении CASE
,
MATCH (Person)-[KNOWS]->(Comp)
WHERE Comp.name='EN' OR Comp.name='FR' OR Comp.name='CUI'
RETURN Person.fname, SUM(
CASE Comp.name
WHEN 'EN' THEN 5
WHEN 'FR' THEN 3
WHEN 'CUI' THEN 1
ELSE 0
END
) AS Points_Candidat
Я не знаю, контекст, но я думаю, что из двух миноре изменения, которые дадут вам эквивалентный, но слегка обрезанный запрос: 1) поскольку три теста в предложении WHERE
идентичны, за исключением проверенного значения, вы можете использовать оператор IN
с набором значений вместо трех терминальной дизъюнкции, и 2), поскольку три значения CASE ... WHEN
исчерпывают возможности того, что связано в предложении WHERE
, все связанные узлы будут test true для одного из случаев, поэтому вам не нужен ELSE
.
MATCH (Person)-[KNOWS]->(Comp)
WHERE Comp.name IN ['EN' ,'FR','CUI']
RETURN Person.fname, SUM(
CASE Comp.name
WHEN 'EN' THEN 5
WHEN 'FR' THEN 3
WHEN 'CUI' THEN 1
END
) AS Points_Candidat
Вы также можете воспользоваться помощью меток и индексов, а если отображение Comp.name
к значению не отличается от запроса для запроса вы можете добавить его в качестве свойства на Comp
и RETURN Person.fname, SUM(Comp.Points_Candidat)
.