Můžete to udělat pomocí funkcí okna.
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;
Klíčovým postřehem je, že „běhy v sekvenci“ mají tuto vlastnost:pokud vyjmenujete řádky (pro každého hráče) podle data a vyjmenujete řádky pro každého hráče a podle data běhů, pak je rozdíl konstantní, když běží jsou všechny stejné a v pořádku. To tvoří skupinu, kterou můžete použít pro agregaci k identifikaci požadovaného hráče.
Zde je SQL Fiddle.