https://school.programmers.co.kr/learn/courses/30/lessons/133027

 

프로그래머스

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

programmers.co.kr

코드설명

LEFT OUTER JOIN + GROUP BY + SUM + LIMIT 를 활용합니다.

 

문제에서 JULY 테이블에 새로운 FLAVOR가 존재할경우는 FULL OUTER JOIN으로 처리해야만 할 것 입니다.

하지만, 이 문제의 경우 JULY테이블의 FLAVOR는 FIRST_HALF 테이블의 FLAVOR의 외래 키입니다.  라는 조건이 있으므로 LEFT OUTER JOIN으로 FIRST_HALF 테이블만 검사하면 됩니다.

코드

SELECT FH.FLAVOR
FROM FIRST_HALF AS FH
LEFT OUTER JOIN JULY AS J
ON FH.FLAVOR = J.FLAVOR
GROUP BY FH.SHIPMENT_ID
ORDER BY SUM(FH.TOTAL_ORDER + J.TOTAL_ORDER) DESC
LIMIT 3

 

ORACLE

UNION을 활용한 코드입니다.

SELECT FLAVOR
FROM   (SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
        FROM
            (SELECT *
            FROM FIRST_HALF
            UNION
            SELECT *
            FROM JULY)
        GROUP BY FLAVOR
    ORDER BY TOTAL_ORDER DESC ) 
WHERE ROWNUM <= 3

 

해당 테이블에서 다른 컬럼에 있는 데이터라도 SUM(FH.TOTAL_ORDER + J.TOTAL_ORDER)로 더한 값을 구할 수 있습니다.

SELECT FLAVOR FROM
(SELECT FH.FLAVOR
FROM FIRST_HALF FH
LEFT OUTER JOIN JULY J
ON FH.FLAVOR = J.FLAVOR
GROUP BY FH.FLAVOR
ORDER BY SUM(FH.TOTAL_ORDER + J.TOTAL_ORDER) DESC )
WHERE ROWNUM <= 3

+ Recent posts