https://school.programmers.co.kr/learn/courses/30/lessons/273712
문제 설명
- Lv 3 문제
- 더 이상 업그레이드할 수 없는 아이템의 아이템 ID, 아이템명, 아이템의 희귀도 출력
- 결과는 아이템 ID 기준으로 내림차순 정렬
- 'ITEM_A' → 'ITEM_B' 업그레이드 가능할 때, ITEM_A는 ITEM_B의 PARENT_ITEM 이다.
- PARENT_ITEM이 없는 아이템은 ROOT_ITEM 이다.
문제 풀이
JOIN 사용
SELECT II.ITEM_ID, II.ITEM_NAME, II.RARITY
FROM ITEM_INFO II LEFT OUTER JOIN ITEM_TREE IT
ON II.ITEM_ID = IT.PARENT_ITEM_ID AND IT.PARENT_ITEM_ID IS NOT NULL
WHERE IT.PARENT_ITEM_ID IS NULL
ORDER BY II.ITEM_ID DESC;
◼️두 테이블을 LEFT OUTER JOIN 해서 업그레이드할 수 없는 아이템 구하기
- ITEM_INFO 테이블과 ITEM_TREE 테이블을 LEFT OUTER JOIN한다.
- 조인 조건은 ITEM_ID와 PARENT_ITEM_ID가 같고, PARENT_ITEM_ID가 NULL이 아니다.
- LEFT OUTER JOIN 후, PARENT_ITEM_ID 가 NULL인 아이템이 업그레이드 할 수 없는 아이템이다.
◼️ORDER BY 로 ITEM ID 기준 내림차순 정렬
NOT IN 연산자 사용
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID NOT IN (SELECT PARENT_ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NOT NULL)
ORDER BY ITEM_ID DESC;
◼️ 서브 쿼리로 업그레이드 할 수 있는 ITEM들의 PARENT_ITEM_ID 구하기
- 서브 쿼리에서 PARENT_ITEM_ID가 NULL이 아닌 PARENT_ITEM_ID만 조회 → 업그레이드 가능한 ITEM들의 PARENT_ITEM_ID
◼️ 업그레이드할 수 없는 ITEM 구하기
- 메인 쿼리에서 서브쿼리의 PARENT_ITEM_ID와 일치하지 않은 ITEM_ID 정보만 추출 → 업그레이드가 불가능한 ITEM들의 ITEM_ID
◼️ORDER BY 로 ITEM ID 기준 내림차순 정렬
'PS > SQL' 카테고리의 다른 글
[프로그래머스][SQL] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2024.06.18 |
---|---|
[프로그래머스][SQL] 조건에 부합하는 중고거래 상태 조회하기 (0) | 2024.06.18 |
[프로그래머스][SQL] 조건에 맞는 사용자 정보 조회하기 (0) | 2024.06.10 |
[프로그래머스][SQL] 자동차 평균 대여 기간 구하기 (0) | 2024.06.09 |
[프로그래머스][SQL] 프로그래머스 SQL 문제 풀이 (1) (0) | 2024.06.04 |