본문 바로가기

기초 튼튼/코테준비

[코테준비] SQL 해커랭크(HackerRank) 문제풀이 - 피벗 - 6

* 코딩인터뷰시 기업들에서 널리 활용중인 해커랭크(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'를 풀며 정리한 글입니다.


부족한 블로그에 방문해 주셔서 감사합니다.

잘못된 내용 수정 피드백은 댓글로 적어주세요.

감사합니다 :-)

반응형