안녕하십니까 다제입니다.
오늘은 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
링크도 함께 공유하였으니 여러분도 꼭 함께 풀어 보시고 제가 푼 방법보다 좋은 방법이 있다면 댓글로 공유 부탁드립니다.
감사합니다.
'Code > SQL' 카테고리의 다른 글
[HackerRank] SQL 코딩테스트 준비 4day(feat. tips 및 복습) (0) | 2021.10.29 |
---|---|
[HackerRank] SQL 코딩테스트 준비 3day(feat. tips 및 복습) (0) | 2021.10.20 |
[HackerRank] SQL 코딩테스트 준비 1day(feat. tips 및 복습) (0) | 2021.10.18 |
[SQL] all? 너는 누구? (feat. MySQL, pgSQL) (0) | 2021.10.14 |
[SQL] 5. 최적화 원리 이해하기 (2) | 2021.05.31 |