on
[HackerRank] SQL 코딩테스트 준비 2day(feat. tips 및 복습)
[HackerRank] SQL 코딩테스트 준비 2day(feat. tips 및 복습)
안녕하십니까 다제입니다.
오늘은 SQL 복습 2일차 입니다. 오늘도 HackerRank에서 문제를 풀어보았는데요
함께 살펴보도록 하시죠!
2021.10.19 - 2day
3. Occupations
- 문제의 해석 : 이름과 직업으로 구성된 컬럼을 직업 기준으로 재구성하는 문제입니다.
- 선정한 이유 : SQL에서 Pivot table을 만들 수 있는지를 체크하기 위해서 선정하였습니다.
- 접근방식 : RowNumber를 활용하여 각 그룹별 넘버링을 한 후 넘버링으로 group by 하여 풀었습니다.
- 링크 : https://www.hackerrank.com/challenges/occupations/problem
- 코드
set @r1=0, @r2=0, @r3=0, @r4=0; select min(Doctor), min(Professor), min(Singer), min(Actor) from( select case when Occupation='Doctor' then (@r1:=@r1+1) when Occupation='Professor' then (@r2:=@r2+1) when Occupation='Singer' then (@r3:=@r3+1) when Occupation='Actor' then (@r4:=@r4+1) end as RowNumber, case when Occupation='Doctor' then Name end as Doctor, case when Occupation='Professor' then Name end as Professor, case when Occupation='Singer' then Name end as Singer, case when Occupation='Actor' then Name end as Actor from OCCUPATIONS order by Name ) temp group by RowNumber;
4. Binary Tree Nodes
- 문제의 해석 : 트리 노드 정보를 담고 있는 테이블에서 각각의 row가 어디에 해당하는지를 가려내는 문제입니다.
- 선정한 이유 : 트리에 대한 이해와 SQL조건문을 다룰 수 있는지를 확인 할 수 있는 문제여서 선정하였습니다.
- 접근방식 : P에 null이 있다면 그것은 루트노드로 간주 할 수 있고, n에 있는 값이 P 있다면 inner 노드라고 간주할 수 있다는 아이디어로 접근하였습니다.
- 링크 : https://www.hackerrank.com/challenges/binary-search-tree-1/problem
- 코드
select case when P is null then concat(N, ' Root') when N in (select distinct P from bst) then concat(N, ' Inner') else concat(N, ' Leaf') end from bst ORDER BY N ASC
링크도 함께 공유하였으니 여러분도 꼭 함께 풀어 보시고 제가 푼 방법보다 좋은 방법이 있다면 댓글로 공유 부탁드립니다.
감사합니다.
from http://daje0601.tistory.com/293 by ccl(A) rewrite - 2021-10-19 11:00:21