* 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 SQL 문제 정리.
1. 문제
- SQL 쿼리를 통해 피벗테이블을 구성하라는 문제이다.
- 주어진 테이블에는 각 직업별 사람의 이름과 그의 직업이 저장되어있다.
- 이를 통해 Doctor, Professor, Singer, Actor 순으로 피벗테이블을 작성하라는 문제
2. 정답
- rowNumber를 저장하는 temp 테이블을 따로 만들고, 이를 grouping 해주어 출력해야 하는 문제
- Medium 난이도 문제이지만 꽤나 까다롭다..
- SQL에서의 변수설정법 (Ex; set @variable = n)을 통해 rownumber를 세팅해주어야 하고,
- 각 직업의 rowNum별 이름을 피벗테이블에 알맞게 이전 temp테이블에서 지정해주어야 하고
- 이름 출력 순서를 서브쿼리 바깥에서 ordering 해주면 null이 가장 먼저 출력되기 때문에, 서브쿼리 내에서 ordering을 해준 뒤 바깥 서브쿼리에서는 그루핑만을 해주어야 하는 문제였기 때문이다.
- 서브쿼리 바깥에선 min으로 출력하건 max로 출력하건 큰 차이는 없어보인다.
- 애초에 rowNumber를 각 직업별로 1개씩만 출력될 수 있도록 temp 정제시에 세팅해두었기 때문이다.
3. 결과
해커랭크(HackerRank)의 'SQL for Interview'를 풀며 정리한 글입니다.
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 내용 수정 피드백은 댓글로 적어주세요.
감사합니다 :-)
반응형
'기초 튼튼 > 코테준비' 카테고리의 다른 글
[코테준비] Python 해커랭크(HackerRank) 문제풀이 - 2 (Counting Valleys) (0) | 2020.05.21 |
---|---|
[코테준비] Python 해커랭크(HackerRank) 문제풀이 - 1 (Socks Merchant) (0) | 2020.05.19 |
[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 직업정보 포메팅 - 5 (0) | 2020.05.16 |
[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 삼각형 형태 알아내기 - 4 (0) | 2020.05.16 |
[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 3 (0) | 2020.05.11 |