노아

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

알고리즘/SQL

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

Noaahhh 2024. 9. 19. 14:50

 

Question

 

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

 

 

Pseudocode

 

 

  1. LEFT JOIN 수행
    • ITEM_INFO 테이블을 i로, ITEM_TREE 테이블을 t로 참조합니다.
    • ITEM_INFO의 ITEM_ID와 ITEM_TREE의 PARENT_ITEM_ID를 기준으로 LEFT JOIN을 수행합니다. 이 조인은 ITEM_INFO의 모든 항목을 포함하면서, ITEM_TREE의 PARENT_ITEM_ID와 일치하지 않는 경우도 포함합니다.
  2. 부모 항목이 아닌 항목 필터링
    • WHERE t.item_id IS NULL 조건을 사용하여 ITEM_TREE 테이블에 부모 항목으로 나타나지 않는 항목만 선택합니다. 즉, ITEM_INFO의 항목이 ITEM_TREE의 부모 항목이 아닌 경우를 찾습니다.
  3. 결과 그룹화 및 정렬
    • GROUP BY i.ITEM_ID는 ITEM_ID로 결과를 그룹화합니다. 이 경우 각 ITEM_ID에 대한 정보를 집계합니다.
    • ORDER BY i.ITEM_ID DESC는 결과를 항목 ID를 기준으로 내림차순으로 정렬합니다.

 

 

 

Code

 

select i.item_id,ITEM_NAME, RARITY
from ITEM_INFO i left join ITEM_TREE t
    ON i.ITEM_ID = t.PARENT_ITEM_ID
where t.item_id is null
group by i.ITEM_ID
order by i.ITEM_ID desc