U kunt dit doen met vensterfuncties.
select player_id, runs, count(*) as numruns
from (select p.*,
(row_number() over (partition by player_id order by match_date) -
row_number() over (partition by player_id, runs order by match_date)
) as grp
from players p
) pg
group by grp, player_id, runs
order by numruns desc
limit 1;
De belangrijkste observatie is dat "runs in een reeks" deze eigenschap hebben:als je de rijen (voor elke speler) opsomt op datum en je de rijen opsomt voor elke speler en op de runs op datum, dan is het verschil constant wanneer de runs zijn allemaal hetzelfde en in orde. Dat vormt een groep die u kunt gebruiken voor aggregatie om de gewenste speler te identificeren.
Hier is de SQL Fiddle.