Your request seems to be aggregated for a different reason. Somewhere I expect to see a player based group.
select truncate(mpb.yearid/10, 0) as decade, mpb.nameFirst, mpb.nameLast, sum(mpb.HR) as HRs from masterplusbatting mpb group by truncate(mpb.yearid/10, 0), mpb.nameFirst, mpb.nameLast
This gives the total number of home launches for every decade. Now you want the person to be the most. For this, I would use the row_number() function and subqueries:
select decade, nameFirst, nameLast, HRs from (select decade, nameFirst, nameLast, HRs, row_number() over (partition by decade order by HRs desc) as seqnum from (select truncate(mpb.yearid/10, 0) as decade, mpb.nameFirst, mpb.nameLast, sum(mpb.HR) as HRs from masterplusbatting mpb group by truncate(mpb.yearid/10, 0), mpb.nameFirst, mpb.nameLast ) t ) t where seqnum = 1 order by 1
In a database like MySQL, you need to do this with a second connection:
select t.* from (select truncate(mpb.yearid/10, 0) as decade, mpb.nameFirst, mpb.nameLast, sum(mpb.HR) as HRs from masterplusbatting mpb group by truncate(mpb.yearid/10, 0), mpb.nameFirst, mpb.nameLast ) t join (select decade, max(HRs) as maxHRs from (select truncate(mpb.yearid/10, 0) as decade, mpb.nameFirst, mpb.nameLast, sum(mpb.HR) as HRs from masterplusbatting mpb group by truncate(mpb.yearid/10, 0), mpb.nameFirst, mpb.nameLast ) t group by decade ) tsum on t.decade = tsum.decade and t.HRs = tsum.maxHRs order by decade