세조목

SQL 정리(프로그래머스 - '주문량이 많은 아이스크림들 조회하기')(24.01.22) 본문

데이터 분석 공부/SQL

SQL 정리(프로그래머스 - '주문량이 많은 아이스크림들 조회하기')(24.01.22)

세조목 2024. 1. 22. 20:33

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

 

프로그래머스

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

programmers.co.kr

SELECT FLAVOR
FROM
(
SELECT *
FROM FIRST_HALF

UNION ALL

SELECT *
FROM JULY
) A
GROUP BY FLAVOR
ORDER BY SUM(TOTAL_ORDER) DESC
LIMIT 3

 

문제에서는

7월 아이스크림 총 주문량과

상반기의 아이스크림 총 주문량을 더한 값 중

그 값이 큰 순서대로 상위 3개의 맛을 조회하라고 요구한다.

 

총 주문량의 합이니까 SUM함수를 쓰면 될 것 같다.

그런데 어떻게 7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더할 수 있을까?

다른 테이블인데 말이다.

 

JOIN으로는 힘들 것 같다.

옆으로 붙여봤자 SUM함수를 사용하기는 힘들것이기 때문이다.

 

두 테이블의 컬럼이 동일하니까 UNION ALL 함수를 쓸 수 있지 않을까?

그렇다.

UNION ALL 함수를 써서

두 테이블을 위 아래로 붙이고

FLAVOR 별로 TOTAL_ORDER를 SUM하면 되는 것이다.

그런다음

SUM(TOTAL_ORDER)를 내림차순으로 정렬하고

3개까지 출력하라는 명령어인 LIMIT 3을

입력해주면

결과값이 출력되는 것을 확인할 수 있다.