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

2025. 11. 11. 19:01·SQL/프로그래머스

📌 문제링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


📌 문제풀이

1. UNION ALL 사용

with

raw as (
    select * from FIRST_HALF
    union all
    select * from JULY
)

, raw2 as (
    select *, row_number() over(order by total_order desc) as rn 
    from (select flavor, sum(total_order) as total_order
        from raw
        group by flavor) as a
)
    
select flavor
from raw2
where rn <= 3
order by rn
  • union all 사용한 이유?
    • 데이터 양이 많지 않고 두 테이블의 컬럼명과 형식이 모두 같았기 때문에 join보다 더 간편한 방법이라고 생각
  • row_number() 를 사용하여 '상반기+7월 의 아이스크림 총주문량' 에 대한 순서를 부여한 후 where절을 활용하여 상위 3개의 행만 가져옴

 

2. JOIN 사용

with 

raw as (
    select *, row_number() over(order by total_order desc) as rn
    from (select flavor, sum(a.total_order) + sum(b.total_order) as total_order
        from FIRST_HALF a left join JULY b using(flavor)
        group by flavor) as a
)

select flavor
from raw
where rn <= 3
order by rn
  • left join을 사용한 이유?
    • 원래대로면 full outer join 을 활용해야 맞다고 생각하지만 mysql에는 지원되지 않는 형식
    • 그렇다면 left join 과 right join, union 을 활용하여 쿼리를 작성해야함
    • 하지만 데이터 양이 많지 않고, first_half 테이블의 sample 데이터 양이 더 많았기 때문에 그나마 안전하고 편의상 left join 사용 ( left join 활용해도 정답처리 됨)
  • FIRST_HALF, JULY 두 테이블을 조인하는 컬럼명이 FLAVOR로 같기 때문에 using 사용
  • row_number() 를 사용하여 '상반기+7월 의 아이스크림 총주문량' 에 대한 순서를 부여한 후 where절을 활용하여 상위 3개의 행만 가져옴
저작자표시 (새창열림)

'SQL > 프로그래머스' 카테고리의 다른 글

[MySQL] [프로그래머스 level 5] 멸종위기의 대장균 찾기  (0) 2026.01.16
[MySQL] [프로그래머스 level 4] 그룹별 조건에 맞는 식당 목록 출력하기  (0) 2025.10.30
[MySQL] [프로그래머스 level 4] 입양 시각 구하기(2)  (0) 2025.10.24
[MySQL] [프로그래머스 level 4] 자동차 대여 기록 별 대여 금액 구하기  (0) 2025.10.22
[MySQL] [프로그래머스 level 3] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기  (0) 2025.06.18
'SQL/프로그래머스' 카테고리의 다른 글
  • [MySQL] [프로그래머스 level 5] 멸종위기의 대장균 찾기
  • [MySQL] [프로그래머스 level 4] 그룹별 조건에 맞는 식당 목록 출력하기
  • [MySQL] [프로그래머스 level 4] 입양 시각 구하기(2)
  • [MySQL] [프로그래머스 level 4] 자동차 대여 기록 별 대여 금액 구하기
ღ유닝이ღ
ღ유닝이ღ
🗃️이모저모 공부기록함🗃️
  • ღ유닝이ღ
    ღ yuni_world ღ
    ღ유닝이ღ
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • Python (8)
      • JAVA (0)
      • 알고리즘 (41)
        • 알고리즘 개념(이코테) (8)
        • 백준 (20)
        • 프로그래머스 (13)
      • SQL (44)
        • 프로그래머스 (39)
        • Tip (5)
      • Database (2)
      • AI (1)
      • 일상(자격증,어학 등) (6)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
ღ유닝이ღ
[MySQL] [프로그래머스 level 4] 주문량이 많은 아이스크림들 조회하기
상단으로

티스토리툴바