인프런 커뮤니티 질문&답변

myong님의 프로필 이미지
myong

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이

(Hacker Rank)Binary Tree 문제 질문

작성

·

266

·

수정됨

0

Leaf는 자식이 없다는 것을 이용해서

두 번째 조건으로 P의 값과 N이 같지 않을 때 'Leaf' 로 출력 되도록 아래와 같은 쿼리로 작성해 보았습니다.

 

 

근데 Leaf가 출력 되지 않는 오답이 나오는데, 이유가 뭘까요?

위와 같은 조건으로 쿼리를 작성하려면 어떻게 작성해야 하는지도 궁금합니다!

답변 1

0

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

not in ()은 괄호 안에 들어가는 값 중 null이 있으면 동작하지 않습니다.
(참고 문서: https://stackoverflow.com/questions/5231712/sql-not-in-not-working)

여기서도 p 컬럼의 값 중 null이 있기 때문에 오류가 납니다.
그러므로 아래 쿼리와 같이 null을 제외해 주어야 합니다.

select n
, (case when p is null then 'Root'
        when n not in (select distinct p from bst) then 'Leaf'
        else 'Inner' end) as node_type
from bst
order by n
myong님의 프로필 이미지
myong

작성한 질문수

질문하기