आप निम्न का उपयोग कर सकते हैं:
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;
यह टीम द्वारा विभाजित प्रत्येक गेम को रैंक करने के लिए ROW_NUMBER का उपयोग करता है, और परिणाम के अनुसार, इन दोनों के बीच का अंतर लगातार परिणामों के प्रत्येक समूह के लिए अद्वितीय है। तो आपकी पहली टीम के लिए आपके पास होगा:
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
जहां RN1 को केवल टीम द्वारा विभाजित किया जाता है, और rn2 टीम और परिणाम द्वारा विभाजन होता है।
जैसा कि आप देख सकते हैं, यदि आप घाटे को हटाते हैं तो लगातार जीत के प्रत्येक समूह के लिए DIFF कॉलम एक से बढ़ जाता है:
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
इसके बाद आप यह सुनिश्चित करने के लिए समूह बना सकते हैं कि आप लगातार जीत देख रहे हैं, और अधिक से अधिक प्राप्त करने के लिए एक गिनती करें। मैंने तब प्रति टीम अधिकतम लगातार जीत हासिल करने के लिए एक और पंक्ति संख्या का उपयोग किया है।