首页 > 解决方案 > 如何展示连续“获胜”最多的球队。在 epl 比赛中 Neo4j

问题描述

这个问题是对 @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 比赛是个问题,但事实并非如此。请帮忙。谢谢

标签: neo4jcypher

解决方案


您的数据结构与原始问题中的数据结构不同。

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

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


推荐阅读