알고리즘/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;