Неверный ввод 'r': ожидаемый 't / T' - PullRequest
0 голосов
/ 13 мая 2019

Получение следующей ошибки:

Neo.ClientError.Statement.SyntaxError: Неверный ввод 'r': ожидаемый 't / T' (строка 4, столбец 9 (смещение: 116)) "сумма (если sr.WScore> sr.LScore, затем 1 еще 0) как выигрыш "

Правильна ли моя логика ????

MATCH (t:Teams),(sr:SeasonResults)
WHERE sr.WTeamID=t.TeamID and t.TeamName="x"  
RETURN count(wins),
sum(if sr.WScore > sr.LScore then 1 else 0 ) as wins

Ответы [ 3 ]

0 голосов
/ 13 мая 2019
Предложение

A WITH или RETURN не может одновременно назначить переменной (например, wins) И использовать одну и ту же переменную. Таким образом, предложение типа RETURN COUNT(wins), SUM(...) AS wins не поддерживается.

Однако, если ваш вариант использования просто для подсчета количества раз, когда связанный SeasonResults узел имел WScore > LScore, вам не нужно использовать COUNT(), и этого должно быть достаточно:

MATCH (t:Teams), (sr:SeasonResults)
WHERE sr.WTeamID=t.TeamID and t.TeamName="x"
RETURN SUM(CASE WHEN sr.WScore > sr.LScore THEN 1 END) AS wins
0 голосов
/ 15 мая 2019

Я думаю, если вы возьмете счет SeasonResults, где sr.WTeamID=t.TeamID даст вам необходимое количество побед.

Я предполагаю, что WTeamID является идентификатором команды-победителя, поэтому, когда идентификатор этой команды равен WTeamID из SeasonResults, это означает победу для этой команды.И количество всех таких SeasonResults будет общим выигрышем для этой команды.

Вы можете структурировать запрос так же, как:

MATCH (t:Teams)
WHERE t.TeamName="x"
WITH t
MATCH (sr:SeasonResults)
WHERE sr.WTeamID=t.TeamID
RETURN count(sr) AS wins
0 голосов
/ 13 мая 2019

Используйте СЛУЧАЙ, не ЕСЛИ

sum(CASE WHEN sr.WScore > sr.LScore THEN 1 ELSE 0 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...