Vous pouvez utiliser les éléments suivants :
SELECT Team, TotalWins, FirstWin, LastWin
FROM ( SELECT Team,
WL,
COUNT(*) TotalWins,
MIN("Date") FirstWin,
MAX("Date") LastWin,
ROW_NUMBER() OVER(PARTITION BY Team, WL ORDER BY COUNT(*) DESC) RowNumber
FROM ( SELECT Team,
"Date",
WL,
ROW_NUMBER() OVER(PARTITION BY Team ORDER BY "Date") - ROW_NUMBER() OVER(PARTITION BY Team, WL ORDER BY "Date") Grouping
FROM T
) GroupedData
WHERE WL = 'W'
GROUP BY Team, WL, Grouping
) RankedData
WHERE RowNumber = 1;
Il utilise ROW_NUMBER pour classer chaque match partitionné par équipe, et aussi par résultat, la différence entre ces deux est unique pour chaque groupe de résultats consécutifs. Donc, pour votre première équipe, vous auriez :
Team Date W/L RN1 RN2 DIFF
Team_1 04/01/0012 W 1 1 0
Team_1 06/01/0012 W 2 2 0
Team_1 07/01/0012 L 3 1 2
Team_1 14/01/0012 W 4 3 1
Team_1 19/01/0012 W 5 4 1
Team_1 30/01/0012 L 6 2 4
Team_1 14/02/0012 W 7 5 2
Team_1 17/02/0012 L 8 3 5
Team_1 20/02/0012 W 9 6 3
Où RN1 est juste partitionné par équipe, et rn2 est partitionné par équipe et résultat.
Comme vous pouvez le voir, si vous supprimez les pertes, la colonne DIFF s'incrémente de un pour chaque groupe de victoires consécutives :
Team Date W/L RN1 RN2 DIFF
Team_1 04/01/0012 W 1 1 0
Team_1 06/01/0012 W 2 2 0
---------------------------------------
Team_1 14/01/0012 W 4 3 1
Team_1 19/01/0012 W 5 4 1
---------------------------------------
Team_1 14/02/0012 W 7 5 2
---------------------------------------
Team_1 20/02/0012 W 9 6 3
Vous pouvez ensuite regrouper par ceci pour vous assurer que vous regardez des victoires consécutives et faire un décompte pour en tirer le meilleur parti. J'ai ensuite utilisé un autre numéro de ligne pour obtenir le maximum de victoires consécutives par équipe.