Я работал над этой задачей хакерранка - https://www.hackerrank.com/challenges/binary-search-tree-1/problem
Я пришел к этому решению с небольшой справкой "Обсуждения":
SELECT N, CASE WHEN P IS NULL THEN "Root" WHEN (SELECT COUNT(*) FROM BST WHERE P=B.N) > 0 THEN "Inner" ELSE "Leaf" END FROM BST AS B ORDER BY N;
Im интересно, зачем здесь нужен "P=B.N... AS B" и какая разница на самом деле. Почему WHERE P=N терпит неудачу?
P=B.N... AS B
WHERE P=N
Если вы опустите «B», он будет выглядеть в подвыборе «SELECT COUNT (*) FROM BST», а не в BST из основного запроса «FROM BST AS B».