728x90
반응형
Occupations | HackerRank
Pivot the Occupation column so the Name of each person in OCCUPATIONS is displayed underneath their respective Occupation.
www.hackerrank.com
문제



문제 접근 방식
OCCUPATION 컬럼을 피벗하여 NAME 기준 정렬하면 되는 문제이다.
1) row_number()를 활용하여 occupation 별로 name 오름차순 정렬하여 순위를 매긴다
2) case when 구문을 활용하여 각 occupation에 해당하는 name을 가져온다.
3) 이때, 순위 기준으로 group by를 하여 그 순위에 해당하는 name을 가져와야 한다.
group by를 활용하게 된다면, 반드시 집계함수를 사용해야 하여 max() 집계함수를 사용하였다.
SELECT MAX(CASE WHEN OCCUPATION = 'Doctor' THEN NAME ELSE NULL END) AS DOCTOR
, MAX(CASE WHEN OCCUPATION = 'Professor' THEN NAME ELSE NULL END) AS PROFESSOR
, MAX(CASE WHEN OCCUPATION = 'Singer' THEN NAME ELSE NULL END) AS SINGER
, MAX(CASE WHEN OCCUPATION = 'Actor' THEN NAME ELSE NULL END) AS ACTOR
FROM (
SELECT NAME
, OCCUPATION
, ROW_NUMBER() OVER (PARTITION BY OCCUPATION ORDER BY NAME) AS RN
FROM OCCUPATIONS
) TB
GROUP BY RN
;728x90
반응형
'코딩 테스트 > MySQL' 카테고리의 다른 글
| [HackerRank] Interviews (2) | 2025.08.18 |
|---|---|
| [HackerRank] Weather Observation Station 18 (2) | 2025.08.14 |
| [HackerRank] Symmetric Pairs (2) | 2025.08.11 |
| [HackerRank] Placements (2) | 2025.08.08 |
| [HackerRank] SQL Project Planning (1) | 2025.08.07 |