[Hacker Rank] Binary Tree Nodes 문제 풀이 복습 My sql
by daramiSELECT N,
CASE WHEN N NOT IN (SELECT P FROM BST WHERE P IS NOT NULL) THEN 'Leaf'
WHEN P IS NULL THEN 'Root'
ELSE 'Inner' END
FROM BST
ORDER BY N
-- 의사 코드 작성 (노드 타입을 작성해라)
-- 1. N이 P에 포함되어있지 않으면 ->Leaf (부모가 아니다)
-- 2. P가 Null 이면 ->ROOT(부모가 없다)
-- 3. 둘다 아니면 ->INNER
-- 문제 : N이 P안에 포함되어있지 않으면에 NULL이 있다. 제거한 테이블: 서브 쿼리
🚀 배운점 🚀
- CASE 문 END 로 끝내는거 까먹지 말기
- CASE WHEN 으로 외워서 CASE WHEN CASE WHEN 으로 쓰는 불상사 없도록 하기
CASE WHEN THEN
WHEN THEN
ELSE END
- Wrong Answer 뜨면 요청 쿼리문 다시 읽어보기
주 3회 1:1 sql 스터디를 한다. 데이터 분석 현업자 분이시라 서로 설명하면서, 많이 배운다! 같이 풀이하면서 배운것
Q: 왜 이렇게 쓰면 안될까요?
CASE WHEN N NOT IN P THEN 'Leaf'
- IN 에는 컬럼이나 테이블을 가지고 올 수 없다.
- 숫자나 문자열을 직접 가져 오는 것만 가능 ex) When N IN ('Paris', 'Seoul')
- 그래서 IN에 컬럼을 가져 오려면 무조건 아래처럼 SELECT 써서 IN 서브쿼리문 (결과값이 하나 이상일 때) 작성
- 그리고 NULL이 값중에 있으면 계산이 안되니까 WHERE P IS NOT NULL도 써줘야 함
CASE WHEN N NOT IN (SELECT P FROM BST WHERE P IS NOT NULL) THEN 'Leaf'
- 근데 in과 다르게 exists 는 결측치 있어도 계산 됨. exists 에 대해 배움.
- sqld 자격증이 실무에 도움이 많이 된다. exists 도 여기에 나와서 이게 더 성능이 좋다는 것이 생각나서 그렇게 푸셨다.
- 신청한 sqld 공부 열심히 하기!
'SQL > HackerRank,프로그래머스' 카테고리의 다른 글
[HackerRank] Ollivander's Inventory 문제 풀이 mysql (0) | 2022.05.14 |
---|---|
[HackerRank] Top Competitors 문제 풀이 mysql (0) | 2022.05.14 |
[HackerRank] Weather Observation Station 18,19,20 Mysql 풀이 (0) | 2022.05.11 |
[HackerRank] New Companies 문제 풀이 Mysql (0) | 2022.05.09 |
[Hackerank] Top earners , 서브쿼리를 써야만하나요 mysql (0) | 2022.05.05 |
블로그의 정보
다람
darami