당신이에서 박쥐에 의해 신인 (> 130)와 이닝 투구 (> 50)를 알아낼 수있는 Lahman 데이터베이스 사용은, 그러나 서비스에 대한 아무 것도 존재하지 않습니다 25 남자 명단 (9 월이 아닌) 제한 시간.
이렇게하려면 데이터를 다시 인쇄해야합니다 (http://www.retrosheet.org/game.htm).
아래의 쿼리는 At Bats와 Innings Pitched의 신인을 모두 제공하지만 서비스 시간 신인은 예외입니다. 팀이 MLB 명단에 신인을두고 플레이하지 않는 경향이있는 팀은 소수에 불과합니다. 개발 시간을 상실하고 (게임하지 않음) 통제 된 시간에 잃는 서비스 시간을 단축합니다. 그래서 당신이 행복하다면,이 테이블들이 할 것입니다.
신참 선수를 강조 표시하기 위해 타자 또는 투수와 함께 외부 참조 테이블로 사용할 수 있습니다. 또는 RookieYr 구별을 사용하여 타자와 투수에게 추가 열을 추가 할 수 있습니다 (Lahman DB에 새로운 시즌을 추가하려는 것처럼 조언 - 필요없는 커스터마이징).
/************************************ Create MLB Rookie Xref Table **********************************************
-- Sort Out Batters who accumulate 130 AB
-- Sort Out Pitchers who accumulate 50 IP
-- Define Rookie Year, Drop off years previous and years after
-- Can be updated Annually using "player ID not in (select distinct playerID from Xref_RookieYr)
-- Using the Sean Lahman Database
-- Authored By Paul DeVos {www.linkedin.com/in/devosp/}
*****************************************************************************************************************/
/****** Query uses T-SQL, Query ran in MS SQL 2012 - you may need to tweek for other platorms or versions. ******/
--Step 1 - Run this for hitter accumulated ABs and when Rookie Year (130 Career At Bats)
Select
concat(m.nameFirst, ' ', m.nameLast) as Name,
b.PlayerID,
b.yearID,
m.debut,
sum(b.ab) over (partition by b.playerID order by b.playerID, b.yearID) as CumulativeAB,
null as CumulativeIP, -- Place Holder for Rookie Pitchers Insert
case when sum(b.ab) over (partition by b.playerID order by b.playerID, b.yearID) >= 130 then b.yearID end as RookieYR
into #temp_rookie_year
from
[master] m
inner join Batting b
on m.playerID=b.playerID
-- Selects Position Players
where b.playerID not in (select distinct f.playerID from Fielding f where f.pos = 'P')
--Step 2 - Run this to get accumulated IP and Rookie Year (50 Career IP)
Insert into #temp_rookie_year
(
Name, PlayerID, YearID, Debut, CumulativeAB, CumulativeIP, RookieYR
)
Select
concat(m.nameFirst, ' ', m.nameLast) as Name,
p.PlayerID,
p.yearID,
m.debut,
null as CumulativeAB,
sum(p.IPouts) over (partition by p.playerID order by p.playerID, p.yearID) as CumulativeIP,
case when sum(p.IPouts) over (partition by p.playerID order by p.playerID, p.yearID) >= 150 then p.yearID end as RookieYR
from [master] m
inner join pitching p
on m.playerID=p.playerID
--Chooses Pitchers
where p.playerID in (select distinct f.playerID from Fielding f where f.pos = 'P')
--Step 3 Run this - sorts out the rookie year into Rookie Xref Table
select Name, PlayerID, min(RookieYr) as RookieYear
into #Xref_RookieYr
from #temp_rookie_year
--where name = 'Hank Aaron'
group by Name, PlayerID
order by RookieYear desc
--Step 4 - run IF you want to remove players who never lost rookie status (cup of cofee players, etc - anyone under 130 AB or 50 IP)
select * from #Xref_RookieYr
order by playerID
Delete from #Xref_RookieYr where RookieYear is null
select * from #Xref_RookieYr
order by playerID
/*****************************************************************************************************************
You can change drop the "#" in front of the table (and name it whatever you want) when you want a permanent table.
If you leave it, it'll drop off when you close the program. e.g. Xref_Rookie_2013
*****************************************************************************************************************/
나에게 문제를 일으키는 된 한 것은 배팅과 피칭 테이블 내 선수 시즌 세분화되어 있다는 것입니다, 각각의 항목이 아니라 각 선수를위한 단일 시즌.안타깝게도 신인 선수는 2 시즌 이상 (선수 X는 한 시즌에는 40 이닝을, 다음 시즌에는 10 개) 던질 수 있습니다. 피칭 테이블의 모든 플레이어 항목을보고 특정 계절이 만났거나 최소값을 초과했는지 확인하는 방법이 있습니까? – velcronomicon