Насколько я понимаю, вам нужно несколько прогонов в год, сгруппированных в столбцы года
Вам нужна функция суммы, а не макс.
select
sum(case when year=2008 then run else 0 end) 2008_run,
sum(case when year=2009 then run else 0 end) 2009_run,
from table t1
group by name;
Чтобы найти 5 лучших прогонов в каждомгод.
with table1 as
(
select name, sum(runs) as RunsPerYear, year from myTable group by name, year
)
table2 as
(
select name, year, RunsPerYear, dense_rank() over (partition by name, year order by RunsPerYear) as rnk from table2
)
select name, year, RunsPerYear from table2 where rnk<=5;