https://school.programmers.co.kr/learn/courses/30/lessons/133026
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 분석
난이도 : level 2
테이블 : FIRST_HALF(SHIPMENT_ID, FLAVOR, TOTAL_ORDER), ICECREAM_INFO(FLAVOR, INGREDITENT_TYPE)
문제 요구사항
상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요.
문제 풀이
1. JOIN을 사용하는 방법
- join을 사용해서 두개의 테이블을 FLAVOR를 기준으로 합친다.
- 문제에서 각 아이스크림 성분 타입의 총 주문량을 요구하고 있으므로 아이스크림 성분 타입으로 GROUP BY 해준다.
- SUM을 이용해서 각 아이스크림 성분 타입별 총 주문량의 합을 계산한다.
- TOTAL_ORDER을 기준으로 내림차순 정렬한다.
SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF AS F, ICECREAM_INFO AS I
WHERE F.FLAVOR = I.FLAVOR
GROUP BY I.INGREDIENT_TYPE
ORDER BY F.TOTAL_ORDER ASC
2. WHRER을 사용하는 방법
WHERE F.FLAVOR = I.FLAVOR 퀴리를 사용해서 두 테이블 간에 FLAVOR 컬럼을 기준으로 내부 조인을 수행할 수 있다.
즉, FIRST_HALF 테이블의 FLAVOR와 ICECREAM_INFO 테이블의 FLAVOR가 일치하는 행들만 결합
SELECT I.INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF AS F, ICECREAM_INFO AS I
WHERE F.FLAVOR = I.FLAVOR
GROUP BY INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC
내부적으로 JOIN이 수행되는 것은 똑같지만 WHERE을 사용해서 좀더 직관적으로 JOIN을 표현할 수 있는 방법이다.
'하루 30분 SQL 공부하기' 카테고리의 다른 글
| [MySQL] 프로그래머스 진료과별 총 예약 횟수 출력하기 (0) | 2024.10.15 |
|---|---|
| [MySQL] 프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2024.10.15 |
| [SQL 코테준비] 가격이 제일 비싼 식품의 정보 출력하기, 잡은 물고기 중 가장 큰 물고기의 길이 구하기 프로그래머스 (0) | 2024.10.10 |
| [MySQL] 프로그래머스 코딩테스트 문제 풀이 SELECT 과일로 만든 아이스크림 고르기, 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.10.08 |
| [SQL/DFL] SELECT문의 WHERE절과 논리, 비교, SQL 연산자 (2) | 2024.10.02 |