lahmanlite/sql/pitchingpost.sql

91 lines
2.4 KiB
PL/PgSQL

/*
Copyright (C) 2024 filifa
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <https://www.gnu.org/licenses/>.
*/
pragma foreign_keys = 0;
begin;
attach database 'lahman-raw.db' as 'raw';
create temp table pitchingpost as
select * from "raw".pitchingpost;
alter table pitchingpost drop column "lgID";
alter table pitchingpost drop column "teamID";
update pitchingpost
set
W = nullif(W, ''),
L = nullif(L, ''),
G = nullif(G, ''),
GS = nullif(GS, ''),
CG = nullif(CG, ''),
SHO = nullif(SHO, ''),
SV = nullif(SV, ''),
IPouts = nullif(IPouts, ''),
H = nullif(H, ''),
ER = nullif(ER, ''),
HR = nullif(HR, ''),
BB = nullif(BB, ''),
SO = nullif(SO, ''),
BAOpp = nullif(BAOpp, ''),
IBB = nullif(IBB, ''),
WP = nullif(WP, ''),
HBP = nullif(HBP, ''),
BK = nullif(BK, ''),
BFP = nullif(BFP, ''),
GF = nullif(GF, ''),
R = nullif(R, ''),
SH = nullif(SH, ''),
SF = nullif(SF, ''),
GIDP = nullif(GIDP, '');
CREATE TABLE IF NOT EXISTS main."pitchingpost" (
"player" TEXT,
"year" NUMERIC,
"round" NUMERIC,
"W" NUMERIC check (W <= G),
"L" NUMERIC check (L <= G),
"G" NUMERIC check (W + L + SV <= G),
"GS" NUMERIC check (GS <= G),
"CG" NUMERIC check (CG <= GS),
"SHO" NUMERIC check (SHO <= G),
"SV" NUMERIC check (SV <= G),
"IPouts" NUMERIC,
"H" NUMERIC,
"ER" NUMERIC check (ER <= R),
"HR" NUMERIC check (HR <= H),
"BB" NUMERIC,
"SO" NUMERIC check (SO <= IPouts),
"BAOpp" NUMERIC,
"ERA" NUMERIC,
"IBB" NUMERIC,
"WP" NUMERIC,
"HBP" NUMERIC,
"BK" NUMERIC,
"BFP" NUMERIC,
"GF" NUMERIC check (GF <= G),
"R" NUMERIC,
"SH" NUMERIC,
"SF" NUMERIC,
"GIDP" NUMERIC check (2 * GIDP <= IPouts),
PRIMARY KEY("player","year","round"),
foreign key("player","year") references "appearancespost"("player","year"),
foreign key("year","round") references "seriespost"("year","round")
);
insert into main.pitchingpost select distinct * from temp."pitchingpost";
commit;