Bạn có thể làm điều này với các chức năng cửa sổ.
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;
Quan sát chính là "chạy theo trình tự" có thuộc tính này:nếu bạn liệt kê các hàng (cho mỗi người chơi) theo ngày và bạn liệt kê các hàng cho mỗi người chơi và theo lượt chạy theo ngày, thì sự khác biệt là không đổi khi lượt chạy đều giống nhau và theo thứ tự. Điều đó tạo thành một nhóm mà bạn có thể sử dụng để tổng hợp nhằm xác định người chơi bạn muốn.
Tại đây là SQL Fiddle.