Так что я пытаюсь получить самую длинную серию побед из моей футбольной базы данных.Я знаю, что есть много похожих вопросов о переполнении стека, но большинство решений просто заканчиваются добавлением общего выигрыша для каждой команды, а это не то, что я пытаюсь получить.
Моя цель - получить самую длинную серию побед, какую когда-либо имела команда.В сущности, если команда 1 сыграла 10 игр и в течение этих 10 игр выиграла 6 раз подряд, а затем проиграла 1 и выиграла 3 подряд, команда последовательных побед должна вернуть, что команда1 имеет максимальную серию побед 6.
Код, который я имею, отображает общее количество побед для каждого игрока, но это не то, что я пытаюсь получить.
MATCH (T1:Team)-[m:Match]-(:Team)
with T1, m
ORDER BY m.round ASC
WITH T1,
REDUCE(initial = {wins: 0, max_wins: 0}, matches IN COLLECT(m) |
CASE WHEN (T1 = startNode(matches) AND (matches.ft_home_score > matches.ft_away_score))
OR (T1 = endNode(matches) AND (matches.ft_away_score > matches.ft_home_score))
THEN {wins: initial.wins + 1, max_wins: CASE WHEN initial.wins + 1 > initial.max_wins THEN initial.wins + 1 ELSE initial.max_wins END}
ELSE initial
END).max_wins AS successive_wins
return T1.name AS Team, successive_wins ORDER BY successive_wins DESC
Результат кода выше:
Team successive_wins
"Manchester City FC" 32
"Manchester United FC" 25
"Tottenham Hotspur FC" 23
"Chelsea FC" 21
"Liverpool FC" 21
"Arsenal FC" 19
"Burnley FC" 14
"Everton FC" 13
"Newcastle United FC" 12
"Leicester City FC" 12
Я думаю, что я делаю что-то не так с моим оператором REDUCE, но не совсем уверен, что именно: D