티스토리 뷰

Hobby/Code

[SQL] JOIN를 이용한 참조

생각많은 소심남 2014. 6. 20. 12:58

지금 듣고 있는 온라인 수업중에 sabermetrics 를 가르치는 수업이 있다. 이 수업이 좋은게 단순히 야구지식을 가를치는 것에 그치지 않고, lahman Baseball Database를 SQL과 R을 통해서 원하는 자료를 뽑을 수 있는 것까지 가르치고 있다. 그냥 수업중에 나온 문제를 소개해보고자 한다.


1
2
3
4
5
6
7
8
9
SELECT CONCAT(m.nameFirst, ' ', m.nameLast) AS playerName,
    yearID, G, AB, H, 2B, 3B, HR, R, RBI, SB,
    H/AB AS BA,
    (H+BB+HBP)/(AB+BB+HBP+SF) AS OBP,
    (H+2B+2*3B+3*HR)/AB AS SLG
FROM Batting b
JOIN Master m
         ON b.playerID = m.playerID
where lgID = 'AL' AND yearID >= 2013


일반적으로 SQL을 처음 배우면 접하면 SELECT / FROM /WHERE 로 정의되는 구문은 많이 볼 수 있다. 위의 예시는 특정 table에서의 이름을 master table에서도 JOIN을 시켜서 가져오는 구문이다. 잘보면 알겠지만 mastertable은 선수에 대한 기본적인 정보만 가지고 있지, 그 선수의 타율이 얼마인지 타점이 얼마인지는 Batting이라고 정의되어 있는 다른 table에서 참조해야 한다. 이렇게 참조할 때 위와 같이 JOIN을 쓰면 SELECT에서 두 Table에 대한 column들을 사용할 수 있다.

댓글