IT/프로그래머스 - SQL

[programmers/oracle] 프로그래머스 GROUP BY 성분으로 구분한 아이스크림 총 주문량

나콘 2023. 7. 6. 10:04

[programmers/oracle] 프로그래머스 GROUP BY 성분으로 구분한 아이스크림 총 주문량 

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/133026

 

프로그래머스

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

programmers.co.kr

문제

상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요 

 

내가 풀어본 오라클 정답 
SELECT B.INGREDIENT_TYPE, SUM(A.TOTAL_COLOR) AS TOTAL_ORDER
FROM FIRST_HALF A, ICECREAM B
WHERE 1=1
AND A.FLAVOR = B.FLAVOR
GROUP BY  B.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC

 


 

정리 

1. 접근할때 무조건 쪼개서! 맨 앞에 나오는 '아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을' 먼저 접근 

 

[상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 /총주문량이 작은 순서대로 조회하는 SQL문을 작성해주세요. /이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요] - 이런식으로 쪼개기 

 

 

 

2. INGREDIENT_TYPE 성분타입은 ICECREAM_INFO 테이블에 있다면 TOTAL_ORDER 총주문량은 FIRST_HALF 테이블에 있기 때문에 먼저 조인해준다  -> "ICECREAM_INFO의 기본 키는 FLAVOR입니다. ICECREAM_INFO테이블의 FLAVOR는 FIRST_HALF 테이블의 FLAVOR의 외래 키입니다." 라는 설명이 있다 -> FLAVOR로 조인해준다 

 

SELECT * FROM FIRST_HALF A, ICECREAM B
WHERE 1=1
AND A.FLAVOR = B.FLAVOR


 

 

3.성분타입에 대한 아이스크림의 총주문량이 이기때문에 성분타입 INGREDIENT_TYPE를  GROUP BY에 넣어주고 집계함수 SUM을 사용하여 총주문량TOTAL_ORDER 을 감싼다  ->  SUM(A.TOTAL_ORDER)

 

SELECT  B.INGREDIENT_TYPE , SUM(A.TOTAL_ORDER)
FROM FIRST_HALF A, ICECREAM_INFO B
WHERE 1=1 
AND A.FLAVOR = B.FLAVOR
GROUP BY B.INGREDIENT_TYPE

 

 

4. '총주문량이 작은순서대로 조회' 

 : ORDER BY 사용

SELECT B.INGREDIENT_TYPE, SUM(A.TOTAL_COLOR)
FROM FIRST_HALF A, ICECREAM B
WHERE 1=1
AND A.FLAVOR = B.FLAVOR
GROUP BY  B.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC

 

 

 

5. '이때 총 주문량을 나타내는 컬럼은 TOTAL_ORDER 로 지정해주세요 '

SELECT B.INGREDIENT_TYPE, SUM(A.TOTAL_COLOR) AS TOTAL_ORDER
FROM FIRST_HALF A, ICECREAM B
WHERE 1=1
AND A.FLAVOR = B.FLAVOR
GROUP BY  B.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER ASC

완성 끝 -

반응형