https://school.programmers.co.kr/learn/courses/30/lessons/133025
[문제]
다음은 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF 테이블과 아이스크림 성분에 대한 정보를 담은 ICECREAM_INFO 테이블입니다. FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER 는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다. FIRST_HALF 테이블의 기본 키는 FLAVOR입니다.
NAME | TYPE | NULLABLE |
TOTAL_ORDER | INT(N) | FALSE |
FLAVOR | VARCHAR(N) | FALSE |
TOTAL_ORDER | INT(N) | FALSE |
ICECREAM_INFO 테이블 구조는 다음과 같으며, FLAVOR, INGREDITENT_TYPE 은 각각 아이스크림 맛, 아이스크림의 성분 타입을 나타냅니다. INGREDIENT_TYPE에는 아이스크림의 주 성분이 설탕이면 sugar_based라고 입력되고, 아이스크림의 주 성분이 과일이면 fruit_based라고 입력됩니다. ICECREAM_INFO의 기본 키는 FLAVOR입니다. ICECREAM_INFO테이블의 FLAVOR는 FIRST_HALF 테이블의 FLAVOR의 외래 키입니다.
NAME | TYPE | NULLABLE |
FLAVOR | VARCHAR(N) | FALSE |
INGREDIENT_TYPE | VARCHAR(N) | FALSE |
상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.
[코드]
SELECT FIRST_HALF.FLAVOR
FROM FIRST_HALF
INNER JOIN ICECREAM_INFO
ON FIRST_HALF.FLAVOR=ICECREAM_INFO.FLAVOR
WHERE FIRST_HALF.TOTAL_ORDER > 3000 AND ICECREAM_INFO.INGREDIENT_TYPE LIKE 'fruit_based'
ORDER BY FIRST_HALF.TOTAL_ORDER DESC;
[고찰]
이번 문제는 SQL 코딩테스트에서 가장 많이 출제되는 JOIN을 활용한 첫 번째 문제였다. JOIN은 크게 INNER JOIN과 OUTER JOIN으로 나눌 수 있는데, INNER JOIN은 조건에 해당하는 칼럼만을 출력하고, OUTER JOIN은 조건에 만족하지 않는 컬럼도 출력한다는 차이점이 있다.
이번 문제는 INNER JOIN을 사용하여 해결해야 하며, INNER JOIN 형식은 아래와 같다.
SELECT 컬럼
FROM 기준테이블
INNER JOIN 다른테이블
ON 조인조건
해당 문제에서 기준 테이블은 FIRST_HALF이고, 조인 조건은 두 테이블에 공통으로 속하는 FLVOR 속성이 같은 컬럼만 출력하는 것이다. 이때, 어떤 테이블에 속하는 속성인지 명시하기 위해 속성 앞에 테이블명.을 붙여 구분해준다. 이외 나머지 조건들은 이전 문제에서 풀었던 것 처럼 하면 정답 처리를 받을 수 있었다.
'SQL 문제' 카테고리의 다른 글
[프로그래머스 SQL] 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.10.02 |
---|---|
[프로그래머스 SQL] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2023.10.02 |
[프로그래머스 SQL] 조건에 부합하는 중고거래 상태 조회하기 (0) | 2023.09.27 |
[프로그래머스 SQL] 자동차 평균 대여 기간 구하기 (0) | 2023.09.27 |
[프로그래머스 SQL] 나이 정보가 없는 회원 수 구하기 (0) | 2023.09.27 |