[SQL] 과일로 만든 아이스크림 고르기

Ray·2025년 3월 2일

SQL

목록 보기
5/39

🔎 문제설명

  • 출처: 프로그래머스
  • 사용언어(RDBMS): SQL(MySQL)
  • 문제:

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




✅ 제출답안

# 상반기 아이스크림 총주문량이 3,000보다 높으면서 
# 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회
SELECT FH.FLAVOR
FROM FIRST_HALF AS FH INNER JOIN ICECREAM_INFO AS II USING (FLAVOR)
WHERE FH.TOTAL_ORDER > 3000 AND II.INGREDIENT_TYPE= 'fruit_based'
ORDER BY FH.TOTAL_ORDER DESC;



🚀 풀이기록

앗, JOIN하는 법을 잊어버렸다🙀 SQL을 놓은지 4개월여만에 다시 공부하려고 시작하니 기억나지 않은 부분이 많았다..

해당 문제는 INNER JOIN을 해서 푸는 문제인데, 내가 ON절을 사용해 어떤 속성을 사용해서 JOIN할지 정하지 않아서 틀렸다.

  • INNER JOIN: 두 테이블에서 공통된 컬럼에서 일치하는 결과만 출력


🍯 INNER JOIN 조건절 간단정리

  • INNER JOIN을 할 때, JOIN이라고만 써도 INNER JOIN으로 인식
  1. ON절을 활용한 INNER JOIN
  • ANSI SQL 표준으로 모든 SQL 데이터베이스에서 지원됨.
  • USING ()보다 조인 조건을 자유롭게 설정가능
    - 조인하려는 두 테이블에서 각각 조인 조건으로 사용하는 컬럼명이 달라도 가능!
  • 조인 키(여기서는 FLAVOR)가 두 번 출력됨
SELECT A.컬럼명, B.컬럼명, ...
FROM 테이블A AS A INNER JOIN 테이블B AS B
     ON A.공통컬럼 = B.공통컬럼;

# 해당 문제에 적용
SELECT FH.FLAVOR
FROM FIRST_HALF AS FH INNER JOIN ICECREAM_INFO AS II
     ON FH.FLAVOR = II.FLAVOR
WHERE FH.TOTAL_ORDER > 3000 AND II.INGREDIENT_TYPE= 'fruit_based'
ORDER BY FH.TOTAL_ORDER DESC;

  1. USING()을 활용한 INNER JOIN
  • 이 때, 두 테이블에서 조인 조건으로 사용할 컬럼명(FLAVOR)이 동일해야함.
  • 결과에서 조인 키(여기서는 FLAVOR)가 한 번만 출력.
SELECT A.컬럼명, B.컬럼명, ...
FROM 테이블A AS A
INNER JOIN 테이블B AS B
USING (공통컬럼);  # 반드시 괄호를 써주어야 함.

# 해당 문제에 적용
SELECT FH.FLAVOR
FROM FIRST_HALF AS FH INNER JOIN ICECREAM_INFO AS II 
	USING (FLAVOR)
WHERE FH.TOTAL_ORDER > 3000 AND II.INGREDIENT_TYPE = 'fruit_based'
ORDER BY FH.TOTAL_ORDER DESC;
profile
미래의 독자인 나를 위해 글을 씁니다.

0개의 댓글