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

윤민선·2026년 7월 6일

프로그래머스

목록 보기
36/79

문제 설명

FIRST_HALF 테이블과 JULY 테이블을 활용해 7월 총 주문량과 상반기 총 주문량을 합산한 값이 큰 순서대로 상위 3개의 맛을 조회하는 문제이다.

테이블주요 컬럼
FIRST_HALFFLAVOR, TOTAL_ORDER
JULYFLAVOR, TOTAL_ORDER

접근 방법

문제를 읽고 아래 2단계로 풀이 흐름을 정리하였다.

  1. FIRST_HALF 테이블과 JULY 테이블을 FLAVOR 기준으로 JOIN
  2. 7월 총 주문량과 상반기 총 주문량을 더한 값이 큰 순서대로 상위 3개 조회
    여기서 한 가지 주의할 점이 있었다. JULY 테이블은 출하 ID별로 같은 FLAVOR가 여러 행으로 나뉘어 저장되어 있기 때문에, 바로 JOIN하면 중복이 발생한다. 따라서 JULY 테이블을 먼저 GROUP BY FLAVOR로 맛별로 합산한 뒤, 그 결과를 서브쿼리로 만들어 FIRST_HALFJOIN해야 한다.
-- JULY를 먼저 맛별로 합산
SELECT FLAVOR, SUM(TOTAL_ORDER) AS JULY_ORDER
FROM JULY
GROUP BY FLAVOR

이 서브쿼리 결과를 J라는 별칭으로 FIRST_HALF FFLAVOR 기준으로 JOIN하면, 상반기와 7월 주문량을 한 행에서 더할 수 있다.

FLAVOR  | F.TOTAL_ORDER | J.JULY_ORDER | 합계
딸기    | 5000          | 3000         | 8000
초코    | 4000          | 2000         | 6000

이후 F.TOTAL_ORDER + J.JULY_ORDER를 내림차순으로 정렬하고 LIMIT 3으로 상위 3개만 뽑으면 된다.

구체적으로 정리한 풀이 흐름:

  1. 서브쿼리로 JULY 테이블을 FLAVOR 기준으로 합산
  2. FIRST_HALF와 서브쿼리를 FLAVOR 기준으로 JOIN
  3. ORDER BY F.TOTAL_ORDER + J.JULY_ORDER DESC로 합산 주문량 내림차순 정렬
  4. LIMIT 3으로 상위 3개만 추출

최종 코드

SELECT F.FLAVOR
FROM FIRST_HALF F
JOIN (
    SELECT FLAVOR, SUM(TOTAL_ORDER) AS JULY_ORDER
    FROM JULY
    GROUP BY FLAVOR
) J ON F.FLAVOR = J.FLAVOR
ORDER BY F.TOTAL_ORDER + J.JULY_ORDER DESC
LIMIT 3

0개의 댓글