https://school.programmers.co.kr/learn/courses/30/lessons/273712
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]
더 이상 업그레이드할 수 없는 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬해 주세요.
[나의 풀이]
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO I
WHERE NOT EXISTS (SELECT 1
FROM ITEM_TREE T
WHERE I.ITEM_ID = T.PARENT_ITEM_ID)
ORDER BY ITEM_ID DESC;
[다른 풀이]
1)
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;
(틀린 풀이)
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID NOT IN (SELECT PARENT_ITEM_ID
FROM ITEM_TREE)
ORDER BY ITEM_ID DESC;
처음에 이렇게 코드를 짰는데 아무것도 반환되지 않았다.
챗지피티한테 물어보니
이렇게 답을 했다. 그리고 해결책으로 WHERE PARENT_ITEM_ID IS NOT NULL을 추가하라고 알려줬다.
"not in은 and 연산을 진행하므로 이를 고려해 null값은 제거 후 not in 연산을 해야한다."
-참고
[프로그래머스 SQL] 업그레이드 할 수 없는 아이템 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/273712더이상 업그레이드 할 수 없는 아이템 조회하기처음엔 이렇게 작성했었다. parent_item_id에 있지 않는 데이터는 더이상 업그레이드를 할 수
velog.io
2)
SELECT A.ITEM_ID, A.ITEM_NAME, A.RARITY
FROM ITEM_INFO A
LEFT JOIN ITEM_TREE B ON A.ITEM_ID = B.PARENT_ITEM_ID
WHERE B.PARENT_ITEM_ID IS NULL
ORDER BY ITEM_ID DESC;
'프로그래머스 > My SQL' 카테고리의 다른 글
특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2024.12.09 |
---|---|
물고기 종류 별 대어 찾기 (0) | 2024.12.08 |
조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.12.06 |
부서별 평균 연봉 조회하기 (0) | 2024.12.04 |
조건에 맞는 사용자 정보 조회하기 (0) | 2024.12.03 |