코딩일기

[HackerRank] SQL 코딩테스트 준비 2day(feat. tips 및 복습) 본문

Code/SQL

[HackerRank] SQL 코딩테스트 준비 2day(feat. tips 및 복습)

daje 2021. 10. 19. 10:25
728x90
반응형

 

 

 

 

 

안녕하십니까 다제입니다. 

 

오늘은 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

 

 

링크도 함께 공유하였으니 여러분도 꼭 함께 풀어 보시고 제가 푼 방법보다 좋은 방법이 있다면 댓글로 공유 부탁드립니다. 

 

감사합니다. 



728x90
반응형
Comments