HackerRank | Occupations (sql에서 pivot하기)

2024. 9. 30. 22:04·SQL/HackerRank

문제

데이터를 피벗(Pivot)하여 각 직업(Doctor, Professor, Singer, Actor)별로 이름을 알파벳순으로 정렬하고, 각 직업에 해당하는 이름을 출력해야 합니다. 각 직업별로 가장 많은 이름이 포함된 직업에 맞춰 빈 칸은 NULL로 채웁니다.

 

풀이

FROM에서 occupation을 대상으로 name별로 오름차순 정렬한 row_number를 생성한 서브쿼리 작성

 

SELECT에서 CASE WHEN으로 직업별로 이름 출력하게 작성 

※ 쿼리에서는 ROW_NUMBER()를 사용하여 각 직업별로 행 번호를 부여하고, 그 번호를 기준으로 *그룹화(GROUP BY)*하여 결과를 생성합니다. 이 과정에서 각 직업별로 CASE 문을 사용하여 각 행에서 해당 직업에 해당하는 이름을 가져오는데, 각 그룹에서 이름을 하나만 반환해야 합니다.

※ GROUP BY를 사용할 때, 각 그룹에서 반환할 값을 명확히 정의하지 않으면 에러가 발생!

 

GROUP BY에서 서브쿼리의 row_num으로 그룹화

 

ORDER BY에서 row_num 오름차순 정렬

SELECT 
    MAX(CASE WHEN occupation = 'Doctor' THEN name END) AS Doctor,
    MAX(CASE WHEN occupation = 'Professor' THEN name END) AS Professor,
    MAX(CASE WHEN occupation = 'Singer' THEN name END) AS Singer,
    MAX(CASE WHEN occupation = 'Actor' THEN name END) AS Actor
FROM (
    SELECT name, occupation,
           ROW_NUMBER() OVER (PARTITION BY occupation ORDER BY name) AS row_num
    FROM OCCUPATIONS
) AS subquery
GROUP BY row_num
ORDER BY row_num;
저작자표시 비영리 변경금지 (새창열림)

'SQL > HackerRank' 카테고리의 다른 글

HackerRank | Draw The Triangle 1 (재귀적CTE)  (0) 2024.10.26
HackerRank | Higher Than 75 Marks  (0) 2024.10.12
HackerRank | Draw The Triangle 2 (재귀적CTE)  (0) 2024.10.05
HackerRank | Weather Observation Station 20 (sql로 중위수 구하기)  (2) 2024.09.30
'SQL/HackerRank' 카테고리의 다른 글
  • HackerRank | Draw The Triangle 1 (재귀적CTE)
  • HackerRank | Higher Than 75 Marks
  • HackerRank | Draw The Triangle 2 (재귀적CTE)
  • HackerRank | Weather Observation Station 20 (sql로 중위수 구하기)
kimmalgu
kimmalgu
DA(데이터 분석가) 블로그
  • kimmalgu
    kimmalgu 님의 블로그
    kimmalgu
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 통계 (3)
      • [패캠] 데이터분석 부트캠프 (10)
        • 프로젝트 (2)
        • 수업 정리 (8)
      • 파이썬 (8)
        • 통계전산처리 (7)
      • SQL (27)
        • 프로그래머스 (20)
        • HackerRank (5)
        • LeetCode (1)
      • 코테 (0)
      • 독후감 (5)
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.0
kimmalgu
HackerRank | Occupations (sql에서 pivot하기)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.