[프로그래머스][MySQL] JOIN - 주문량이 많은 아이스크림들 조회하기

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

상반기에는 판매하지 않았던 맛을 7월에는 판매할 수도 있고, 반대로 상반기에는 판매했던 맛을 7월에는 판매하지 않을 수도 있다.

그래서 총 주문량을 구하기 위해서는 두 테이블을 OUTER JOIN을 해야 한다고 생각했는데, MySQL에는 FULL OUTER JOIN을 지원하지 않아서 LEFT JOIN과 RIGHT JOIN을 한 후에 그걸 UNION 하는 방식으로 코드를 작성했다.

WITH SUB AS (
    SELECT H.FLAVOR, (H.TOTAL_ORDER + SUB.TOTAL_ORDER) AS TOTAL_ORDER
    FROM FIRST_HALF AS H 
    LEFT JOIN (SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
               FROM JULY
               GROUP BY FLAVOR) AS SUB
    ON H.FLAVOR = SUB.FLAVOR

    UNION

    SELECT H.FLAVOR, (H.TOTAL_ORDER + SUB.TOTAL_ORDER) AS TOTAL_ORDER
    FROM FIRST_HALF AS H 
    RIGHT JOIN (SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
                FROM JULY
                GROUP BY FLAVOR) AS SUB
    ON H.FLAVOR = SUB.FLAVOR

    ORDER BY TOTAL_ORDER DESC
    LIMIT 3
    )
SELECT FLAVOR FROM SUB;
728x90