如何以最连续的“胜利”来展示团队。在英超比赛中neo4j

时间:2019-01-04 18:38:36

标签: neo4j cypher

该问题是对此处Finding the most consecutive wins in a rugby league给出的答案的跟进 通过@cybersam

我的程序适用于EPL比赛。 但是我的数据库结构是完全一样的

我的问题是这没有提供所需的输出。 我在我的数据库上进行了尝试,结果为-曼彻斯特联队取得了14连胜。 它的意思是18岁。

这是数据集 和尝试的代码

Round,Date,Team 1,FT,HT,Team 2
1,(Fri) 11 Aug 2017 (32),Arsenal FC,4-3,2-2,Leicester City FC



MATCH (t:Team)<-[r]-(g:Match)-[r2]->(t2)
WITH t, r.Ftaway_goal > r2.Fthome_goal AS isWin ORDER BY g.Date, g.Round
RETURN t, REDUCE(s = {max: 0, c: 0, prev:false}, w IN COLLECT(isWin) |
  CASE WHEN w
    THEN {
      c: CASE WHEN s.prev THEN s.c+1 ELSE 1 END,
      max: CASE WHEN s.max <= s.c
         THEN CASE WHEN s.prev
           THEN s.c+1
           ELSE CASE WHEN s.max = 0 THEN 1 ELSE s.max END END
         ELSE s.max END,
  prev: w}
ELSE {c: 0, max: s.max, prev: w} END).max AS maxConsecutiveWins

 order by maxConsecutiveWins DESC
 limit 1

我理解代码的案例部分,但是我似乎无法弄清楚为什么没有针对某些胜利进行检查。 最初,我认为这只是一个问题,仅计算away_team比赛,但事实并非如此。 请帮忙。谢谢

1 个答案:

答案 0 :(得分:1)

您的数据结构与original question中的数据结构不同。

Ftaway_goalFthome_goal属性具有不同的名称。因此,您查询的r.Ftaway_goal > r2.Fthome_goal测试仅将客场比赛视为可能的获胜机会。

如果您在主场和客场比赛中都使用了一致的属性名称,例如goal,那么r.goal > r2.goal测试将考虑两种类型的游戏。