得到以下错误:
Neo.ClientError.Statement.SyntaxError:无效的输入“ r”:预期 't / T'(第4行,第9列(偏移量:116))“ sum(如果sr.WScore> sr.LScore 然后1 else 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
答案 0 :(得分:0)
不使用情况下使用CASE
sum(CASE WHEN sr.WScore > sr.LScore THEN 1 ELSE 0 )
答案 1 :(得分:0)
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
答案 2 :(得分:0)
我认为,如果您将SeasonResults
计入其中,sr.WTeamID=t.TeamID
将为您提供所需的获胜数。
我假设WTeamID
是获胜球队的ID,因此当该球队的ID等于WTeamID
的{{1}}时,则表示该球队获胜。这样的SeasonResults
的总数将是这支球队的总胜利。
您可以将查询的结构与以下内容相同:
SeasonResults