SQL/프로그래머스 MySQL with code

프로그래머스 MySQL : [lv.4] 주문량이 많은 아이스크림들 조회하기

jamong5 2023. 7. 20. 18:56
 

프로그래머스

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

programmers.co.kr

 

1. UNION ALL

두개의 테이블을 UNION ALL로 합친 후 GROUP BY로 묶어서 해결할 수 있다.

SELECT FLAVOR
FROM (
        SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
        FROM JULY
        GROUP BY FLAVOR
    
        UNION ALL
    
        SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
        FROM FIRST_HALF
        GROUP BY FLAVOR
    ) A
GROUP BY FLAVOR
ORDER BY SUM(TOTAL_ORDER) DESC
LIMIT 3

 

2. JOIN

JULY에서는 flavor가 같은 레코드가 있을 수 있고, FIRST_HALF에서는 flavor 필드가 key이므로 중복값이 없기 때문에 가능한 방법인 것 같다. JULY 테이블에 이너조인 한 뒤 GROUP BY 후 SUM(JULY)+FIRST_HALF로 원하는 값을 추려낼 수 있다. FIRST_HALF는 SUM으로 묶지 않아야 한다는게 포인트

SELECT JULY.flavor AS FLAVOR
FROM JULY JOIN FIRST_HALF ON JULY.flavor=FIRST_HALF.flavor
GROUP BY JULY.flavor
ORDER BY SUM(JULY.total_order)+FIRST_HALF.total_order DESC
LIMIT 3