프로그래머스-SQL

[프로그래머스-SQL] 프로그래머스 SQL Level2 성분으로 구분한 아이스크림 총 주문량 MySQL

Doshisha 2022. 10. 28. 11:37

문제

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

 

프로그래머스

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

programmers.co.kr

풀이

GROUP BY와 서브쿼리를 이용하여 문제를 해결할 수 있었다.

A 테이블을 SELECT 하는 서브쿼리 절에서 FLAVOR 컬럼에 대한 GROUP BY를 주어 1차로 맛에 대한 총 주문량을 조회해도록 해주었다.

이는 차후에 메인 쿼리에서 INGREDIENT_TYPE 컬럼에 대한 GROUP BY를 진행하기 위한 밑바탕으로 사용하기 위해 위와 같은 방식으로 진행하였고

ICECREAM_INFO 테이블의 FLAVOR는 FIRST_HALF 테이블의 FLAVOR의 외래 키인 점을 이용해서 B 테이블에선 FLAVOR에 해당하는 INGREDIENT_TYPE을 조회할 수 있도록 해준다.

이렇게 서브쿼리를 모두 작성하면 메인쿼리에선 INGREDIENT_TYPE 그룹에 따른 TOTAL_ORDER를 A 테이블에서 조회한 TOTAL_ORDER의 SUM으로 조회할 수 있도록 해주면 문제를 해결할 수 있다.

쿼리

SELECT
    B.INGREDIENT_TYPE,
    SUM(A.TOTAL_ORDER) AS TOTAL_ORDER
FROM
    (SELECT
        FLAVOR,
        SUM(TOTAL_ORDER) AS TOTAL_ORDER
     FROM
        FIRST_HALF
     GROUP BY
        FLAVOR
    ) AS A,
    (SELECT
        *
    FROM
        ICECREAM_INFO
    ) AS B
WHERE
    A.FLAVOR = B.FLAVOR
GROUP BY
    B.INGREDIENT_TYPE
ORDER BY
    TOTAL_ORDER ASC