batting 테이블batting 테이블은 야구 선수들의 시즌별 타격 기록을 저장합니다.
| 컬럼명 | 설명 |
|---|---|
playerID | 선수 ID |
yearID | 시즌 연도 |
teamID | 팀 이름 (예: 'BOS' = 보스턴) |
G_batting | 출전 경기 + 타석 |
AB | 타수 (At Bat) |
H | 안타 (Hits) |
R | 득점 (Runs) |
2B, 3B | 2루타, 3루타 |
HR | 홈런 (Home Runs) |
BB | 볼넷 (Base on Balls) |
SELECT *
FROM batting
WHERE teamID = 'BOS';
WHERE절을 사용해 보스턴 팀(BOS)만 필터링SELECT COUNT(DISTINCT playerID)
FROM batting
WHERE teamID = 'BOS';
DISTINCT playerID 1655SELECT SUM(HR)
FROM batting
WHERE teamID = 'BOS' AND yearID = 2004;
AND 사용 SUM(HR) 222MAX()로 홈런 수 구하고, 그 선수 정보 다시 조회-- 최대 홈런 수 조회
SELECT MAX(HR)
FROM batting
WHERE teamID = 'BOS';
-- 해당 홈런 수를 기록한 선수 정보 조회
SELECT *
FROM batting
WHERE teamID = 'BOS' AND HR = 54;
결과:
HR = 54(예: David Ortiz)
TOP 1 + ORDER BY DESC 활용 (가장 많이 친 사람 1명)SELECT TOP 1 *
FROM batting
WHERE teamID = 'BOS'
ORDER BY HR DESC;
TOP 1과 내림차순 정렬(DESC) 조합은 실무에서도 자주 쓰이는 패턴입니다.
SELECT *
FROM players
WHERE playerID = 'ortizda01';
| 문제 번호 | 핵심 문법 | 요약 설명 |
|---|---|---|
| 1번 | WHERE | 특정 조건(teamID='BOS') 필터링 |
| 2번 | COUNT(DISTINCT col) | 중복 제거 후 개수 세기 |
| 3번 | SUM(col) + WHERE | 조건 만족하는 데이터들의 합계 구하기 |
| 4번 | TOP 1 + ORDER BY DESC | 최댓값 기준 정렬 후 1개만 출력 |
COUNT(DISTINCT col)은 중복 제거 + 집계 조합 TOP N은 랭킹, 상위 N개 조회 시 자주 사용 -- 시즌별 보스턴 홈런 수 정렬
SELECT yearID, SUM(HR) AS totalHR
FROM batting
WHERE teamID = 'BOS'
GROUP BY yearID
ORDER BY totalHR DESC;
-- 보스턴 선수가 누적 홈런이 가장 많은 선수 TOP 5
SELECT playerID, SUM(HR) AS totalHR
FROM batting
WHERE teamID = 'BOS'
GROUP BY playerID
ORDER BY totalHR DESC
OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY;