Estou usando o PostgreSQL 12.0 e tentando obter a sequência mais longa de linhas contínuas para uma coluna e valor específicos.
A tabela é chamada team2 e contém os resultados de uma equipe que se parece com:
match_id (pk), team_name (varchar), opposition (varchar), match_result (varchar)
Minha consulta está tentando encontrar a sequência mais longa de 'Win' em match_result. Há 23 vitórias no total e usando o olho a sequência mais longa deve retornar 5. No entanto, 23 são retornados. Como posso alterar minha consulta para selecionar apenas a sequência mais longa?
WITH ConsecutiveSequences AS (
SELECT
match_result,
ROW_NUMBER() OVER () - ROW_NUMBER() OVER (ORDER BY match_id) AS grp
FROM team2
WHERE match_result = 'Win'
),
GroupedSequences AS (
SELECT
match_result,
COUNT(*) AS consecutive_count
FROM ConsecutiveSequences
GROUP BY match_result, grp
)
SELECT
COALESCE(MAX(consecutive_count), 0) AS longest_consecutive_sequence
FROM GroupedSequences;