该问题是对此处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比赛,但事实并非如此。 请帮忙。谢谢
答案 0 :(得分:1)
您的数据结构与original question中的数据结构不同。
Ftaway_goal
和Fthome_goal
属性具有不同的名称。因此,您查询的r.Ftaway_goal > r2.Fthome_goal
测试仅将客场比赛视为可能的获胜机会。
如果您在主场和客场比赛中都使用了一致的属性名称,例如goal
,那么r.goal > r2.goal
测试将考虑两种类型的游戏。