2021-03-05 08:49:42

요즘 세이버메트릭스 관련해서 다시 읽고 있는 책이 있습니다. 바로, 벤저민 바우머와 앤드루 짐발리스트가 쓴 <세이버메트릭스 레볼루션>입니다. 

 

저자들이 데이터베이스 활용 능력을 강조하는 부분에서 "MLB에서 1000안타 이상을 친 선수 중에서 2루타보다 홈런을 더 많이 쳐낸 선수들이 몇 명일까?"라는 질문을 던집니다. 만약 데이터베이스를 다룰 줄 모르는 사람이라면, 통산 1000안타 이상 친 선수를 통계 사이트에서 모두 찾아낸 다음에, 2루타와 홈런 갯수를 비교해야 할 것이라고 말합니다. 하지만 데이터베이스를 다룰 줄 안다면, 간단한 코드(query, 쿼리)로 쉽게 알아낼 수 있다고 말합니다. 즉, 야구 데이터 분석가를 꿈꾸는 사람이라면 데이터베이스를 다룰 줄 아는 것이 매우 유리하다는 것입니다. 

 

저는 sqlite 레먼 데이터베이스에 쿼리를 날려서 위 질문의 답을 찾아보겠습니다. 우선, 2019년까지 1000안타 이상 친 선수가 몇 명인지 살펴보겠습니다. 이때 필요한 쿼리문은 다음과 같습니다. 

 

sqlite> select count(*) from (select sum(H) as H from batting group by playerID) where H >= 1000;

 

 

통산 1000안타 이상을 쳐낸 선수는 1341명입니다. 

 

이제 더 나아가서 1000안타 이상을 쳤으면서 2루타보다 홈런을 더 많이 쳐낸 선수의 숫자를 살펴보겠습니다. 

 

sqlite> select count(*) from (select sum(H) as H, sum(HR) as HR, sum("2B") as "2B" from batting group by playerID) where H >= 1000 and HR > "2B"; 

 

 

113명입니다. 일반적으로 2루타를 홈런보다 많이 치기 때문에, 여기에 속한 선수들은 조금 희귀한 선수들이죠. 그래서 그런지 1000안타를 친 1341명 중 10%도 안 됩니다. 

 

역시 코딩을 조금만 할 줄 알면, 시간을 많이 아낄 수 있습니다. 야구 데이터를 제공하는 웹사이트에서 이 결과를 알아내고자 했다면, 아마 최소 하루종일 여기에 매달려 있어야 했을 것입니다. 

 

bskyvision의 추천글

[세이버메트릭스] 레먼 데이터베이스에서 류현진 선수 MLB 기록 살펴보기(sqlite3)

[MariaDB] group by 사용 예제