본문 바로가기
Algorithm/SQL

[SQL] 프로그래머스 - 업그레이드 할 수 없는 아이템 구하기

by 호찌민 2024. 7. 15.

https://school.programmers.co.kr/learn/courses/30/lessons/273712

 

프로그래머스

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

programmers.co.kr

 

1. Problem

더 이상 업그레이드할 수 없는 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬해 주세요.

2. Analysis

1. 자식 ID가 없는 경우가 더 이상 업그레이드 할 수 없는 경우라는 것을 파악했고 SELF-JOIN을 통해, 자식 ID가 없는 경우를 조건으로 주면 된다고 생각함.

FROM ITEM_TREE IT1
LEFT JOIN ITEM_TREE IT2
ON IT1.ITEM_ID = IT2.PARENT_ITEM_ID
WHERE IT2.ITEM_ID IS NULL -- 자식 ID가 NULL인 경우

 

 

2. 최종 결과 정보에 포함될 ITEM_NAME, RARITY를 구하기 위해 ITEM_INFO 테이블을 조인하고 활용

FROM ITEM_TREE IT1
LEFT JOIN ITEM_TREE IT2
ON IT1.ITEM_ID = IT2.PARENT_ITEM_ID
LEFT JOIN ITEM_INFO II
ON IT1.ITEM_ID = II.ITEM_ID

3. Solution

-- 코드를 작성해주세요
SELECT 
     IT1.ITEM_ID
    ,II.ITEM_NAME
    ,II.RARITY
FROM ITEM_TREE IT1
LEFT JOIN ITEM_TREE IT2
ON IT1.ITEM_ID = IT2.PARENT_ITEM_ID
LEFT JOIN ITEM_INFO II
ON IT1.ITEM_ID = II.ITEM_ID
WHERE IT2.ITEM_ID IS NULL
ORDER BY
     IT1.ITEM_ID DESC
;