Puoi farlo con le funzioni della finestra.
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;
L'osservazione chiave è che "corre in sequenza" ha questa proprietà:se enumeri le righe (per ogni giocatore) per data ed enumeri le righe per ogni giocatore e per data di esecuzione, la differenza è costante quando le corse sono tutti uguali e in ordine. Ciò forma un gruppo che puoi utilizzare per l'aggregazione per identificare il giocatore che desideri.
Qui è SQL Fiddle.