select b. *
from (
select a. *
,row_number() over () as rank
,(row_number() over ()-1) / 5 as row_num
,row_number() over ()-((row_number() over ()-1) / 5)*5 as col_num
from(
select b.player_id
,p.display_name as player_name
,t.team_abbr
,t.team_logo_espn
,count(distinct week) as games_played
,sum(stat::int)::int as stat
from pbp b
left join players p on p.gsis_id = b.player_id
left join teams t on t.team_abbr = p.team_abbr
where b.player_id <> 'NA' and b.stat <> 'NA'
group by all
having count(distinct week)>=4
order by 6 desc
) a
) b where rank < 26