on my way
[프로그래머스 코딩테스트 연습 SQL] 업그레이드 된 아이템 구하기 (MySQL) 본문
반응형
처음에 문제를 잘 이해하지 못했다.
요약하자면 부모의 희귀도가 'RARE'인 자식 아이템을 출력하는 것이다.
- 문제 이해
- 주어진 문제는 게임에서 사용되는 아이템들이 업그레이드 가능한지 확인하고, 희귀도가 'RARE'인 아이템들의 다음 업그레이드 아이템을 찾아야 했다.
- 아이템 간의 업그레이드 관계가 주어졌고, 업그레이드 가능한 아이템들을 찾아야 했다.
- 테이블 구조
ITEM_INFO
테이블은 각 아이템의 정보를 담고 있었다. 이 테이블에는ITEM_ID
,ITEM_NAME
,RARITY
,PRICE
컬럼이 있었다.ITEM_TREE
테이블은 아이템 간의 업그레이드 관계를 나타내고 있었다. 이 테이블에는ITEM_ID
와PARENT_ITEM_ID
컬럼이 있었다.
- 요구사항 분석
- 희귀도가 'RARE'인 아이템들의 다음 업그레이드 아이템들을 찾아야 했다.
- 결과는 아이템 ID를 기준으로 내림차순으로 정렬해야 했다.
- 쿼리 작성 단계
- 먼저, 희귀도가 'RARE'인 아이템들을 찾는 서브쿼리를 작성했다.
SELECT ITEM_ID FROM ITEM_INFO WHERE RARITY = 'RARE'
- 다음으로, 이 서브쿼리를 사용하여
ITEM_TREE
테이블에서PARENT_ITEM_ID
가 위 서브쿼리에 해당하는 아이템들을 찾도록 했다. ITEM_TREE
테이블과ITEM_INFO
테이블을 조인하여 해당 아이템들의 정보를 가져오도록 했다.- 최종적으로 결과를 아이템 ID 기준으로 내림차순으로 정렬했다.
- 먼저, 희귀도가 'RARE'인 아이템들을 찾는 서브쿼리를 작성했다.
- 최종 쿼리
- 최종적으로 작성된 쿼리는 아래와 같다.
SELECT T.ITEM_ID, I.ITEM_NAME, I.RARITY FROM ITEM_INFO I JOIN ITEM_TREE T ON I.ITEM_ID = T.ITEM_ID WHERE T.PARENT_ITEM_ID IN ( SELECT ITEM_ID FROM ITEM_INFO WHERE RARITY = 'RARE' ) ORDER BY T.ITEM_ID DESC
ITEM_TREE
테이블과ITEM_INFO
테이블을 조인하여 희귀도가 'RARE'인 부모 아이템들을 가진 자식 아이템들의 정보를 가져왔다.
- 최종적으로 작성된 쿼리는 아래와 같다.
반응형
'algorithm > SQL' 카테고리의 다른 글
[프로그래머스 코딩테스트 연습 SQL] 특정한 조건을 만족하는 물고기별 수와 최대 길이 구하기 (MySQL) | COALESCE (1) | 2024.09.16 |
---|---|
[프로그래머스 코딩테스트 연습 SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 (MySQL) | RANK() 함수 (0) | 2024.08.04 |
[프로그래머스 코딩테스트 연습 SQL - 14] 조건에 맞는 개발자 찾기 (MySQL) | SQL BIT 연산 (0) | 2024.08.04 |
[프로그래머스 코딩테스트 연습 SQL - 13] 노선별 평균 역 사이 거리 조회하기 (MySQL) (0) | 2024.08.04 |
[프로그래머스 코딩테스트 연습 SQL - 12] 조건별로 분류하여 주문상태 출력하기 (MySQL) (0) | 2024.07.16 |