문제 풀이
select max(case when occupation='Doctor' then name end),
max(case when occupation='Professor' then name end),
max(case when occupation='Singer' then name end),
max(case when occupation='Actor' then name end)
from (select *, row_number() over (partition by occupation
order by name) rn
from occupations) t
group by rn;
포인트
1. row_number~로 이름에 숫자 붙기기
2. max를 써서 NULL은 맨 마지막으로 처리하기
느낀점
지금까지 풀어본 SQL문제 중 top2안에 들 정도로 어려웠다.
다음에 풀 때는 참고하지 않고 꼭 혼자 풀어봐야겠다. (pivot 테이블로 만드는거 신기해)
3, 4번 풀어야지
'코딩 연습 > SQL' 카테고리의 다른 글
[Hacker Rank] Aggregation2 (0) | 2021.04.05 |
---|---|
[Hacker Rank] Revising Aggregations1 (0) | 2021.04.04 |
[HackerRank] Type of Triangle (0) | 2021.04.04 |
[HackerRank] The PADS (0) | 2021.04.04 |
[HackerRank] Basic Select2 (마무리) (0) | 2021.04.02 |