Player Batting Season & Career Stats Finder - Baseball
Current Search
For single seasons, in 2025, in the regular season, sorted by descending Home Runs.
THIS QUESTION WAS ANSWERED USING
POWERED BY
Your All Access Pass to the
Baseball
Database
Go beyond the basics. Become a Stathead
Start Your FREE Trial
Display Query »
--------------------------------------
main
Page Setup Time: 0.00197 seconds
SELECT name_display, name_display_csk, sup_players.link as name_display_link, IFNULL(age, "") as age, GROUP_CONCAT(DISTINCT CONCAT('<a href="', 'DOMAIN', ts.link, '" target="_blank">', ts.name_abbr, '</a>')) as teams_played_for, year_id as year_id_csk, year_id as year_id, is_complete_comp_season, get_pos_string(person_id, CONCAT("^",GROUP_CONCAT(CONCAT_WS("-",team_id,phase_id,year_id) SEPARATOR "^"),"^")) as pos, GROUP_CONCAT(DISTINCT sup_comp_seasons.name_abbr) as comp_name_abbr, person_id, comp_id, phase_id, SUM(b_games) AS b_games, SUM(b_pa) AS b_pa, SUM(b_ab) AS b_ab, SUM(b_r) AS b_r, SUM(b_h) AS b_h, SUM(b_h - (b_doubles + b_triples + b_hr)) AS b_singles, SUM(b_doubles) AS b_doubles, SUM(b_triples) AS b_triples, SUM(b_hr) AS b_hr, SUM(b_rbi) AS b_rbi, SUM(b_sb) AS b_sb, SUM(b_cs) AS b_cs, SUM(b_bb) AS b_bb, SUM(b_so) AS b_so, IF(SUM(b_ab), SUM(b_h) / SUM(b_ab), NULL) as b_batting_avg_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab), SUM(b_h) / SUM(b_ab), NULL),3)) AS b_batting_avg, IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL) as b_onbase_perc_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL),3)) AS b_onbase_perc, IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL) as b_slugging_perc_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL),3)) AS b_slugging_perc, IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL) + IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL) as b_onbase_plus_slugging_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL) + IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL),3)) AS b_onbase_plus_slugging, IF(sum(b_tob_lg_avg) = 0 || sum(b_tb_lg_avg) = 0, NULL, 100*((SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / sum(b_tb_lg_avg)) + (SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0))/sum(b_tob_lg_avg)) - 1)) as b_onbase_plus_slugging_plus_csk, ROUND(IF(sum(b_tob_lg_avg) = 0 || sum(b_tb_lg_avg) = 0, NULL, 100*((SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / sum(b_tb_lg_avg)) + (SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0))/sum(b_tob_lg_avg)) - 1)),0) AS b_onbase_plus_slugging_plus, SUM(b_tb) AS b_tb, SUM(b_gidp) AS b_gidp, SUM(b_hbp) AS b_hbp, SUM(b_sh) AS b_sh, SUM(b_sf) AS b_sf, SUM(b_ibb) AS b_ibb
FROM sup_player_team_seasons as st
JOIN sup_people USING (person_id)
JOIN sup_players USING (person_id)
JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
JOIN sup_comp_seasons USING (comp_id, year_id)
JOIN (SELECT team_id, year_id, name_abbr, link, phase_id, comp_id FROM sup_team_seasons) as ts USING (team_id, year_id, phase_id, comp_id)
WHERE sup_phase_seasons.type=?
AND year_id<=?
AND year_id>=?
GROUP BY person_id, year_id
ORDER BY b_hr DESC, person_id LIMIT 0, 20
SQL PARAMS -- $VAR1 = [
'reg',
2025,
2025
];
Query Time: 0.10 seconds
Table Build Time: 0.05 seconds
--------------------------------------
SH->PARAM -- $VAR1 = {
'comp_type' => 'reg',
'year_max' => 2025,
'season_end' => -1,
'weight_max' => '500',
'draft_pick_type' => 'overall',
'season_start' => 1,
'year_min' => 2025,
'order_by' => 'b_hr',
'exactness' => 'anymarked',
'match' => 'player_season'
};
SH->PARAM_NO_DEFAULT -- $VAR1 = {
'year_min' => 2025,
'year_max' => 2025,
'comp_type' => 'reg'
};
--------------------------------------
main
Page Setup Time: 0.00197 seconds
SELECT name_display, name_display_csk, sup_players.link as name_display_link, IFNULL(age, "") as age, GROUP_CONCAT(DISTINCT CONCAT('<a href="', 'DOMAIN', ts.link, '" target="_blank">', ts.name_abbr, '</a>')) as teams_played_for, year_id as year_id_csk, year_id as year_id, is_complete_comp_season, get_pos_string(person_id, CONCAT("^",GROUP_CONCAT(CONCAT_WS("-",team_id,phase_id,year_id) SEPARATOR "^"),"^")) as pos, GROUP_CONCAT(DISTINCT sup_comp_seasons.name_abbr) as comp_name_abbr, person_id, comp_id, phase_id, SUM(b_games) AS b_games, SUM(b_pa) AS b_pa, SUM(b_ab) AS b_ab, SUM(b_r) AS b_r, SUM(b_h) AS b_h, SUM(b_h - (b_doubles + b_triples + b_hr)) AS b_singles, SUM(b_doubles) AS b_doubles, SUM(b_triples) AS b_triples, SUM(b_hr) AS b_hr, SUM(b_rbi) AS b_rbi, SUM(b_sb) AS b_sb, SUM(b_cs) AS b_cs, SUM(b_bb) AS b_bb, SUM(b_so) AS b_so, IF(SUM(b_ab), SUM(b_h) / SUM(b_ab), NULL) as b_batting_avg_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab), SUM(b_h) / SUM(b_ab), NULL),3)) AS b_batting_avg, IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL) as b_onbase_perc_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL),3)) AS b_onbase_perc, IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL) as b_slugging_perc_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL),3)) AS b_slugging_perc, IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL) + IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL) as b_onbase_plus_slugging_csk, TRIM(LEADING '0' FROM ROUND(IF(SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0)) / SUM(b_ab + IFNULL(b_bb,0) + IFNULL(b_hbp,0) + IFNULL(b_sf,0)), NULL) + IF(SUM(b_ab), SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / SUM(b_ab), NULL),3)) AS b_onbase_plus_slugging, IF(sum(b_tob_lg_avg) = 0 || sum(b_tb_lg_avg) = 0, NULL, 100*((SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / sum(b_tb_lg_avg)) + (SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0))/sum(b_tob_lg_avg)) - 1)) as b_onbase_plus_slugging_plus_csk, ROUND(IF(sum(b_tob_lg_avg) = 0 || sum(b_tb_lg_avg) = 0, NULL, 100*((SUM(b_h + b_doubles + (2 * b_triples) + (3 * b_hr)) / sum(b_tb_lg_avg)) + (SUM(b_h + IFNULL(b_bb,0) + IFNULL(b_hbp,0))/sum(b_tob_lg_avg)) - 1)),0) AS b_onbase_plus_slugging_plus, SUM(b_tb) AS b_tb, SUM(b_gidp) AS b_gidp, SUM(b_hbp) AS b_hbp, SUM(b_sh) AS b_sh, SUM(b_sf) AS b_sf, SUM(b_ibb) AS b_ibb
FROM sup_player_team_seasons as st
JOIN sup_people USING (person_id)
JOIN sup_players USING (person_id)
JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
JOIN sup_comp_seasons USING (comp_id, year_id)
JOIN (SELECT team_id, year_id, name_abbr, link, phase_id, comp_id FROM sup_team_seasons) as ts USING (team_id, year_id, phase_id, comp_id)
WHERE sup_phase_seasons.type=?
AND year_id<=?
AND year_id>=?
GROUP BY person_id, year_id
ORDER BY b_hr DESC, person_id LIMIT 0, 20
SQL PARAMS -- $VAR1 = [
'reg',
2025,
2025
];
Query Time: 0.10 seconds
Table Build Time: 0.05 seconds
--------------------------------------
SH->PARAM -- $VAR1 = {
'comp_type' => 'reg',
'year_max' => 2025,
'season_end' => -1,
'weight_max' => '500',
'draft_pick_type' => 'overall',
'season_start' => 1,
'year_min' => 2025,
'order_by' => 'b_hr',
'exactness' => 'anymarked',
'match' => 'player_season'
};
SH->PARAM_NO_DEFAULT -- $VAR1 = {
'year_min' => 2025,
'year_max' => 2025,
'comp_type' => 'reg'
};
Data coverage: Since 1871. Stats relying on play-by-play data are complete back to 1969, nearly complete back to 1950, and mostly complete back to 1912. Postseason data since 1903. Please see our data coverage page for details.


We're Social...for Statheads
Site Last Updated:
Question, Comment, Feedback, or Correction?
Subscribe to our Free Email Newsletter
Do you have a sports website? Or write about sports? We have tools and resources that can help you use sports data. Find out more.