ABOUT ME

Today
Yesterday
Total
  • UNION, INTERSECT, EXCEPT
    데이터베이스 with MSSQL/SQL 입문 2022. 4. 8. 12:51

    1. 필요성

    -- 12월에 태어난 선수들의 playerID
    SELECT playerID, birthMonth
    FROM players
    WHERE birthMonth = 12
    -- 커리어 평균 연봉이 3백만 이상인 선수들의 playerID
    SELECT playerID, AVG(salary)
    FROM salaries
    GROUP BY playerID
    HAVING AVG(salary) >= 3000000

    두 개의 SELECT문을 활용하여 합집합, 교집합, 차집합을 구하고 싶을 때는 각각 UNION, INTERSECT, EXCEPT를 활용할 수 있다.

     

    2. UNION, UNION ALL

    -- [커리어 평균 연봉이 3백만 이상인 선수] || [12월에 태어난 선수]들의 playerID (합집합)
    -- UNION (중복 제거), UNION ALL(중복 허용)
    SELECT playerID
    FROM salaries
    GROUP BY playerID
    HAVING AVG(salary) >= 3000000
    UNION
    SELECT playerID
    FROM players
    WHERE birthMonth = 12

     

    3. INTERSECT

    -- [커리어 평균 연봉이 3백만 이상인 선수] && [12월에 태어난 선수]들의 playerID (교집합)
    -- INTERSECT
    SELECT playerID
    FROM salaries
    GROUP BY playerID
    HAVING AVG(salary) >= 3000000
    INTERSECT
    SELECT playerID
    FROM players
    WHERE birthMonth = 12

     

    4. EXCEPT

    -- [커리어 평균 연봉이 3백만 이상인 선수] - [12월에 태어난 선수]들의 playerID (차집합)
    -- EXCEPT
    SELECT playerID
    FROM salaries
    GROUP BY playerID
    HAVING AVG(salary) >= 3000000
    EXCEPT
    SELECT playerID
    FROM players
    WHERE birthMonth = 12

    '데이터베이스 with MSSQL > SQL 입문' 카테고리의 다른 글

    TRANSACTION  (0) 2022.04.11
    JOIN  (0) 2022.04.08
    인덱스(INDEX)  (0) 2022.04.08
    데이터베이스 작성(CREATE, ALTER, DROP)  (0) 2022.04.08
    SUBQUERY, IN, EXISTS  (0) 2022.04.06
Designed by Tistory.