오늘은 UNION에 대해 알아보자.
커리어 평균 연봉이 3백만 이상인 선수들의 ID와 평균을 출력해보자.
각 선수들의 평균 연봉이어야 하므로, Group By와 Having을 이용하여 출력할 수 있다.
SELECT playerID,AVG(salary)
FROM salaries
Group BY playerID
HAVING AVG(salary) >=3000000;
이번엔 간단하게 12월에 태어난 선수들의 ID를 출력해보자.
SELECT playerID,birthMonth
FROM players
WHERE birthMonth=12;
그렇다면 평균 연봉이 3백만 이상이거나 12월에 태어난 사람들을 출력하고 싶다면 어떻게 해야할까? 일반적인 한 SELECT 문으로 해결하기에는 골치아플 것이다.
이럴 때 필요한 것이 UNION.
--평균 연봉이 3백만 이상이 '거나' 12월에 태어난 선수의 ID를 출력한다.
SELECT playerID
FROM salaries
Group BY playerID
HAVING AVG(salary) >=3000000
UNION
SELECT playerID
FROM players
WHERE birthMonth=12
ORDER BY playerID
UNION 자체에는 DISTINCT가 포함되어 있다고 생각하면 된다.
평균 연봉이 3백만이고 12월에 태어난 선수가 있을 수도 있으니, 중복 출력을 방지하기 위함이다.
UNION 뿐만이 아니라 여러 기능이 있는데 짧게 소개하고 마치겠다.
평균 연봉이 3백만'이고' 12월에 태어난 선수만 출력하고 싶다면?->INTERSECT
평균 연봉이 3백만인 직원 집합에서 12월에 태어난 선수를 '빼고' 싶다면?->EXCEPT