Desde que sua tabela seja assim:
"id";"year";"team"
"1";"2000";"AAA"
"2";"2001";"CCC"
"3";"2002";"CCC"
"4";"2003";"BBB"
"5";"2004";"AAA"
"6";"2005";"AAA"
"7";"2006";"AAA"
Esta consulta deve fazer o truque:
SELECT a.year AS start
, MIN(c.year) AS end
, MIN(c.year)-a.year+1 AS total
, CONCAT_WS('-', a.year, IF(a.year = min(c.year), NULL, min(c.year))) as start_end
, a.team
FROM
( SELECT x.year, x.team, COUNT(*) id
FROM results x
JOIN results y
ON y.year <= x.year
GROUP BY x.id
) AS a
LEFT JOIN
( SELECT x.year, x.team, COUNT(*) id
FROM results x
JOIN results y
ON y.year <= x.year
GROUP BY x.id
) AS b ON a.id = b.id + 1 AND b.team = a.team
LEFT JOIN
( SELECT x.year, x.team, COUNT(*) id
FROM results x
JOIN results y
ON y.year <= x.year
GROUP BY x.id
) AS c ON a.id <= c.id AND c.team = a.team
LEFT JOIN
( SELECT x.year, x.team, COUNT(*) id
FROM results x
JOIN results y
ON y.year <= x.year
GROUP BY x.id
) AS d ON c.id = d.id - 1 AND d.team = c.team
WHERE b.id IS NULL AND c.id IS NOT NULL AND d.id IS NULL
GROUP BY start;
BTW Você pode encontrar a Árvore de consultas comuns útil para resolver esses problemas (verifique as respostas para "Encontrar valores anteriores e próximos em uma sequência") :p.