I redid the FIPConstant table to pull summed data from the players_career_pitching_stats table. That table now looks like this:
DROP TABLE IF EXISTS FIPConstant;
CREATE TABLE IF NOT EXISTS FIPConstant AS
SELECT
year
, league_id
, hra_totals
, bb_totals
, hp_totals
, k_totals
, er_totals
, ip_totals
, ipf_totals
, @HRAdj := 13*hra_totals AS Adjusted_HR
, @BBAdj := 3*bb_totals AS Adjusted_BB
, @HPAdj := 3*hp_totals AS Adjusted_HP
, @KAdj := 2*k_totals AS Adjusted_K
, @InnPitch := ((ip_totals*3)+ipf_totals)/3 AS InnPitch
, @lgERA := round((er_totals/@InnPitch)*9,2) AS lgERA
, round(@lgERA - ((@HRAdj+@BBAdj+@HPAdj-@KAdj)/@InnPitch),2) AS FIPConstant
FROM (
SELECT year
, league_id
, sum(hra) as hra_totals
, sum(bb) as bb_totals
, sum(hp) as hp_totals
, sum(k) as k_totals
, sum(er) as er_totals
, sum(ip) as ip_totals
, sum(ipf) as ipf_totals
FROM players_career_pitching_stats
GROUP BY year, league_id
) AS x;
And how did it work? Better.
9 within 0.05; 26 within 0.11. I’m still curious as to why I’m not matching up even better. I still have a lingering suspicion that HBP is behind this, but I am going to let it lie for now unless it comes back to bite me on other calculations.
Our CalcPitching table to this point:
DROP TABLE IF EXISTS CalcPitching;
CREATE TABLE IF NOT EXISTS CalcPitching AS
SELECT
i.player_id
, i.year
, i.stint
, i.team_id
, i.league_id
, split_id
, i.ip
, i.ab
, i.tb
, i.ha
, i.k
, i.bf
, i.rs
, i.bb
, i.r
, i.er
, i.gb
, i.fb
, i.pi
, i.ipf
, i.g
, i.gs
, i.w
, i.l
, i.s
, i.sa
, i.da
, i.sh
, i.sf
, i.ta
, i.hra
, i.bk
, i.ci
, i.iw
, i.wp
, i.hp
, i.gf
, i.dp
, i.qs
, i.svo
, i.bs
, i.ra
, i.cg
, i.sho
, i.sb
, i.cs
, i.hld
, i.ir
, i.irs
, i.wpa
, i.li
, i.outs
, i.war
, @InnPitch := ((3*ip)+ipf)/3 AS InnPitch
, round((9*i.k)/@InnPitch,1) AS 'k9'
, round((9*i.bb)/@InnPitch,1) AS 'bb9'
, round((9*i.hra)/@InnPitch,1) AS 'HR9'
, round((i.bb+i.ha)/@InnPitch,2) AS WHIP
, round(i.k/i.bb,2) AS 'K/BB'
, i.gb/i.fb AS 'gb/fb'
, round((i.ha-i.hra)/(i.ab-i.k-i.hra-i.sh+i.sf),3) AS BABIP
, round((i.er/@InnPitch)*9,2) AS ERA
, round(((13*i.hra)+(3*(i.bb+i.hp))-(2*i.k))/@InnPitch+f.FIPConstant,2) AS fip
FROM players_career_pitching_stats AS i
INNER JOIN FIPConstant AS f ON i.year=f.year AND i.league_id=f.league_id
WHERE i.split_id=1;