select n,(case when p is null then 'Root'
when n in (select p from bst) then 'Inner'
else 'Leaf' end) a
from bst
order by n asc
p값이 null 인 경우 root
n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 있는 경우 Inner
나머지 Leaf (n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 없는 경우, p가 null 값이 아닌 경우)
select n,(case when p is null then 'Root'
when n not in (select p from bst where p is not null) then 'Leaf'
else 'Inner' end) a
from bst
order by n asc
not in
은 null 값이 있을 경우 연산이 불가능하기 때문에,
select p from bst where p is not null
에서 null값을 제외시켜야 한다.
p값이 null 인 경우 root
n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 없는 경우 Leaf
나머지 Inner (n 컬럼의 데이터 중 p 컬럼에 같은 데이터가 있는 경우, p가 null 값이 아닌 경우)