반응형
테이블 정보
1. FIRST_HALF
NAME | TYPE | NULLABLE |
SHIPMENT_ID | INT(N) | FALSE |
FLAVOR | VARCHAR(N) | FALSE |
TOTAL_ORDER | INT(N) | FALSE |
2. JULY
NAME | TYPE | NULLABLE |
SHIPMENT_ID | INT(N) | FALSE |
FLAVOR | VARCHAR(N) | FALSE |
TOTAL_ORDER | INT(N) | FALSE |
예시 테이블
1. FIRST_HALF
SHIPMENT_ID | FLAVOR | TOTAL_ORDER |
101 | chocolate | 3200 |
102 | vanilla | 2800 |
103 | mint_chocolate | 1700 |
104 | caramel | 2600 |
105 | white_chocolate | 3100 |
106 | peach | 2450 |
107 | watermelon | 2150 |
108 | mango | 2900 |
109 | strawberry | 3100 |
110 | melon | 3150 |
111 | orange | 2900 |
112 | pineapple | 2900 |
2. JULY
SHIPMENT_ID | FLAVOR | TOTAL_ORDER |
101 | chocolate | 520 |
102 | vanilla | 560 |
103 | mint_chocolate | 400 |
104 | caramel | 460 |
105 | white_chocolate | 350 |
106 | peach | 500 |
107 | watermelon | 780 |
108 | mango | 790 |
109 | strawberry | 520 |
110 | melon | 400 |
111 | orange | 250 |
112 | pineapple | 200 |
208 | mango | 110 |
209 | strawberry | 220 |
출력 기대값
FLAVOR |
strawberry |
mango |
chocolate |
문제
7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 더한 값이 큰 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
아이디어
- 7월 아이스크림 총 주문량과 상반기의 아이스크림 총 주문량을 알아야 하기에 두 테이블을 조인한다.
- 다만, JULY테이블을 보면 FLAVOR가 중복된 요소가 있는 것이 보인다.
- SHIPMENT_ID 또한 JULY에 존재하나 FIRST_HALF 테이블에는 없는 번호가 있다.
- 따라서 JULY테이블을 참조해 FLAVOR기준 TOTAL_ORDER의 합계를 담는 서브쿼리를 생성해 주어야 한다.
- 해당 서브쿼리와 FIRST_HALF테이블을 INNER JOIN하고 FLAVOR과 두 값을 합친 쿼리를 출력해 준다.
- 이때 총 매출액을 기준으로 내림차순 정렬을 해주어야 한다.
- 최종적으로는 FLAVOR만 출력해 주어야 하므로 위 쿼리 또한 서브쿼리로 사용하여 FLAVOR을 출력한다.
- 문제조건에 상위 3개의 맛을 조회하라고 되어 있으니 WHERE절에 ROWNUM <= 3을 추가해 주면 된다.
정답
-- 코드를 입력하세요
SELECT FLAVOR
FROM (
SELECT A.FLAVOR, A.TOTAL_ORDER + B.TOTAL_ORDER AS TOTAL_ORDER
FROM FIRST_HALF A
INNER JOIN (
SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM JULY
GROUP BY FLAVOR
) B
ON A.FLAVOR = B.FLAVOR
ORDER BY 2 DESC
)
WHERE ROWNUM <= 3
참고사항
서브쿼리 > 서브쿼리 > 조회 순으로 진행했다.
728x90
반응형
'알고리즘 공부 > SQL' 카테고리의 다른 글
[L4] 프로그래머스 ORACLE 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2024.10.18 |
---|---|
[L3] 프로그래머스 ORACLE 카테고리 별 도서 판매량 집계하기 (1) | 2024.10.18 |
[L4] 프로그래머스 ORACLE 5월 식품들의 총매출 조회하기 (0) | 2024.10.18 |
[L3] 프로그래머스 ORACLE, MYSQL 오랜 기간 보호한 동물(1) (1) | 2024.10.18 |
[L2] 프로그래머스 ORACLE 상품 별 오프라인 매출 구하기 (0) | 2024.10.18 |