mun dev

[HackerRank] Occupations 오라클 풀이 본문

알고리즘/HackerRank

[HackerRank] Occupations 오라클 풀이

mndev 2024. 1. 29. 09:59

문제링크

 

Occupations | HackerRank

Pivot the Occupation column so the Name of each person in OCCUPATIONS is displayed underneath their respective Occupation.

www.hackerrank.com

 

풀이

행의 수는 어떤 한 직업에 해당하는 최대 인원 수 만큼 생성될 것이고, 인원 수가 부족한 직업은 NULL로 채워진다.

 

이름은 알파벳 순으로 정렬해야 한다.

 

pivot을 사용할 때는 문법상 합계함수를 함께 사용하고 , for Occupation 열로 만들 값이 모인 컬럼을 in을 사용해 Doctor, Professor, Singer, Actor로 열을 만듦

 

정답 출력에 ooc_num은 필요 없기 때문에 해당하는 것만 뽑아와서 정렬해줘야 NULL이 나오게 된다.

 

 

코드

select doctor
, professor
, singer
, actor
from 
    (select name
     , occupation
     , row_number() over (partition by occupation order by name) as ooc_num
     from occupations
    ) pivot
    (max(name)
    for occupation in ('Doctor' as doctor
                       , 'Professor' as professor
                       , 'Singer' as singer
                       , 'Actor' as actor))
    order by ooc_num;