CODING TEST/MySQL

Lv1 - 과일로 만든 아이스크림 고르기

iamyuunzo 2025. 7. 17. 13:37

📌 문제 정보

- 문제 이름 : 프로그래머스 - (SELECT) 과일로 만든 아이스크림 고르기

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

 

 

 

📌 문제 요약

- TABLE (1) 아이스크림 상반기 주문 정보 : FIRST_HALF
=> SHIPMENT_ID(출하 번호), FLAVOR(아이스크림 맛 = 기본키), TOTAL_ORDER (상반기 아이스크림 총주문량)

 

- TABLE (2) 아이스크림 성분 정보 : ICECREAM_INFO (위 테이블의 외래 키)
=> FLAVOR(아이스크림 맛 = 기본키), INGREDITENT_TYPE (아이스크림의 성분 타입)
=> 주 성분 : 설탕 (sugar_based), 과일 (fruit_based)

 

- 상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL문 작성

 

예시) FIRST_HALF 테이블  /  ICECREAM_INFO 테이블

SHIPMENT_ID  FLAVOR  TOTAL_ORDER   FLAVOR  INGREDIENT_TYPE
101 chocolate  3200 chocolate  sugar_based
102 vanilla  2800 vanilla  sugar_based
103 mint_chocolate  1700 mint_chocolate  sugar_based
104 caramel  2600 caramel  sugar_based
105 white_chocolate  3100 white_chocolate  sugar_based
106 peach  2450 peach  fruit_based
107 watermelon  2150 watermelon  fruit_based
108 mango  2900 mango  fruit_based
109 strawberry  3100 strawberry  fruit_based
110 melon  3150 melon  fruit_based
111 orange  2900 orange  fruit_based
112 pineapple  2900 pineapple  fruit_based

상반기 아이스크림 총주문량이 3,000보다 높은 아이스크림 맛은 chocolate, strawberry, melon, white_chocolate입니다. 이 중에 아이스크림의 주 성분이 과일인 아이스크림 맛은 strawberry와 melon이고 총주문량이 큰 순서대로 아이스크림 맛을 조회하면 melon, strawberry 순으로 조회되어야 합니다.

 

출력)

FLAVOR
melon
strawberry

 

 

 

📌 내 풀이 및 코드

-- 아이스크림 맛 중 주문량이 3000 초과이고 성분이 과일인 맛을 조회

SELECT 
	FH.FLAVOR 					-- 결과로 보여줄 열: 아이스크림 맛
FROM 
	FIRST_HALF FH					-- 첫 번째 테이블: 주문량 정보
JOIN 							
	ICECREAM_INFO IC 				-- 두 번째 테이블: 성분 정보
    ON FH.FLAVOR = IC.FLAVOR            -- 두 테이블을 FLAVOR 컬럼 기준으로 연결 (JOIN 조건)
WHERE 
	FH.TOTAL_ORDER > 3000
	AND IC.INGREDIENT_TYPE = "fruit_based"
ORDER BY 
	FH.TOTAL_ORDER DESC;

- 아무 생각없이 외래키, 기본키 나오니까 FOREIGN KEY를 썼는데 SELECT문에서 쓰지 않는다는걸 깜빡함. (FOREIGN KEY = CREATE TABLE 할 때) -> 이 문제는 FLAVOR별로 주문량과 성분 둘 다 필요하니까 JOIN이 필수!

- FIRST_HALF → 주문량 정보, ICECREAM_INFO → 성분 정보
→ "주문량이 3000 초과이고, 성분이 fruit_based인 FLAVOR를 찾아라" - 두 테이블의 정보를 합쳐야 하니 JOIN을 써야 함

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** JOIN **

- 두 개 이상의 테이블을 합치는 문법 (두 테이블에 있는 공통 컬럼을 기준으로 데이터를 연결)

-- 기본 문법
SELECT 컬럼들
FROM 테이블1 AS A
JOIN 테이블2 AS B
  ON A.공통컬럼 = B.공통컬럼

-- 예시 (직원(EMPLOYEES) 테이블과 부서(DEPARTMENTS) 테이블을 부서 ID로 연결)
SELECT *
FROM EMPLOYEES E
JOIN DEPARTMENTS D
  ON E.DEPT_ID = D.DEPT_ID;

 

** 기본키(PK), 외래키(FK) **

- 기본키 (Primary Key, PK) : 테이블에서 각 행(row)을 고유하게 식별할 수 있는 컬럼

- 외래키 (Foreign Key, FK) : 다른 테이블의 기본키를 참조하는 컬럼