[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