2.성분으로 구분한 아이스크림 총 주문량 (문제풀이 시간 25분)
[문제]
상반기 동안 각 아이스크림 성분 타입과 성분 타입에 대한 아이스크림의 총주문량을 총주문량이 작은 순서대로 조회하는 SQL 문을 작성해주세요. 이때 총주문량을 나타내는 컬럼명은 TOTAL_ORDER로 지정해주세요.
[문제풀이]
문제에서는 테이블이 2개가 있다. 아이스크림 가게의 주문정보가 담긴 (상반기) FIRST_HALF 테이블 구조와 아이스크림 맛이 있는 ICECREAM_INFO이다.
1. FIRST_HALF
| NAME | TYPE | NULLABLE |
| SHIPMENT_ID (출하번호) | INT(N) | FALSE |
| FLAVOR (맛) | VARCHAR(N) | FALSE |
| TOTAL_ORDER (주문량) | INT(N) | FALSE |
2. ICECREAM_INFO
| NAME | TYPE | NULLABLE |
| FLAVOR (맛) | VARCHAR(N) | FALSE |
| INGREDIENT_TYPE(성분) | VARCHAR(N) | FALSE |
여기서 공통적인 요소가 있는 것은 FLAVOR 맛이기 때문에 Join을 하여 연결을 하였다. 그리고, SELECT은 성분과 총 주문수를 출력 하는 내용이기 때문에 아래와 같이 작성하였다 (TOTAL_ORDER에 어떤 내용이 들어갈지 확인해야하므로 일단 괄호를 쳐둠)
SELECT INGREDIENT_TYPE, ()AS TOTAL_ORDER
from FIRST_HALF F
join ICECREAM_INFO I on F.FLAVOR = I.FLAVOR
그 다음엔 아이스크림 성분에 따른 총 주문량을 계산 해야하는데, 아이스크림 성분 'INGREDIENT_TYPE'를 Group by를 걸었다. 그 다음 SELECT 문에는 총 주문량이 출력 되어야 하기 때문에 Sum(F.TOTAL_ORDER)AS TOTAL_ORDER로 처리를 하였다.
SELECT INGREDIENT_TYPE, ()AS TOTAL_ORDER
from FIRST_HALF F
join ICECREAM_INFO I on F.FLAVOR = I.FLAVOR
group by INGREDIENT_TYPE
마지막으로 총 주문량이 작은 순서대로 조회하는 SQL문을 작성해 달라는 내용도 있어, order by를 처리했다.
order by F.TOTAL_ORDER ASC;
그래서 정답은 아래와 같다.
[문제정답]
SELECT I.INGREDIENT_TYPE, Sum(F.TOTAL_ORDER)AS TOTAL_ORDER #아이스크림의 성분
from FIRST_HALF F
join ICECREAM_INFO I on F.FLAVOR = I.FLAVOR
# Left join ICECREAM_INFO I on F.FLAVOR = I.FLAVOR 했을 때도 맞았음
group by I.INGREDIENT_TYPE
order by F.TOTAL_ORDER ASC;
초기화를 하고 문제를 다시 파악하는데 10분, 문제의 정답을 도출 하는지 15분 정도 걸린듯
갑자기 좀 이상한 의문점이 생겼는데, 처음 코드카타를 문제 풀었을 때 Left join을 활용했지만 그 때도 정답이 처리가 되었다.
또 다른 풀이에서는 Where를 활용하는 내용이 있었는데, From절에 2개가 나올 수 있는지 궁금했다 (궁금해서 찾아봤던 것)
[참고차 다른 분이 푼 답 ]
SELECT I.INGREDIENT_TYPE, Sum(F.TOTAL_ORDER)AS TOTAL_ORDER #아이스크림의 성분
from FIRST_HALF F, ICECREAM_INFO I
where F.Flavor = I.flavor
group by I.INGREDIENT_TYPE
order by F.TOTAL_ORDER asc;'스터디 > 학습일지' 카테고리의 다른 글
| [SQL] 코드카타 풀이 Employees Whose Manager Left the Company (0) | 2025.06.20 |
|---|---|
| [SQL] 20250619- mySQL 문제 풀이 미션 (1) (0) | 2025.06.19 |
| [SQL] 250618 코드카타 문제풀이 Leetcode 1204 (0) | 2025.06.18 |
| [SQL] 20250617- mySQL 문제 풀이 미션 (1) (0) | 2025.06.18 |
| [SQL] 20250616- mySQL 문제 풀이 미션 (1) (3) | 2025.06.16 |