Как решить переменную не определена ошибка в Neo4j - PullRequest
0 голосов
/ 20 марта 2020
Match (a)-[:RECEIVES]->(b) 
WITH avg(toFloat(b.rating)) AS avg 
WHERE avg > 2.5 
RETURN b.pID, avg

Этот код дает мне следующую ошибку.

Variable `b` not defined 
"RETURN b.pID, avg"

1 Ответ

1 голос
/ 20 марта 2020

Ваш запрос имеет (как минимум) 2 проблемы:

  1. В предложении WITH не указано b, поэтому b становится несвязанным.
  2. Поскольку вы усредняя по всем b узлам, на самом деле имеет смысл возвращать набор их pID значений со средним значением.

Например:

MATCH ()-[:RECEIVES]->(b) 
WITH AVG(TOFLOAT(b.rating)) AS avg, COLLECT(b.pID) as pIDs
WHERE avg > 2.5 
RETURN pIDs, avg

ПРИМЕЧАНИЕ. Этот запрос ничего не даст, если среднее значение <= 2.5. </p>

...