SQL/문제

SQL | OCCUPATIONS (결과물 수직으로 출력)

jjangdoll 2025. 8. 22. 10:49

OCCUPATIONS

https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true

 

Occupations | HackerRank

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

www.hackerrank.com


샘플 예시처럼 그룹별 이름을 수직으로 출력

 

내가 쓴 답:

WITH A AS (
   SELECT 
     ROW_NUMBER() OVER(PARTITION BY Occupation ORDER BY Name) AS Num, 
     Name, 
     Occupation
   FROM OCCUPATIONS
)
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 A
GROUP BY Num ;

 

1. 우선 직업 별로 순번 매겨주는  + 그룹으로 묶을 수 있게 : row_number

2. MAX랑 CASE WHEN 이용해서 가로 데이터를 세로로 출력

  (MAX를 쓰는 이유 : 안 쓰고 CASE WHEN만 사용할 경우 해당하는 그룹값 외 null 값이 출력되는 것을 정리 + 오류 방지) → 최댓값 의미가 아니라 한 개의 값으로 축약하는 용도 (MIN도 사용가능)


처음에 WITH A "AS" → 이거  빼먹어서 오류 계속 남^^.. 결국 지피티 돌려버림 ㅎ

'SQL > 문제' 카테고리의 다른 글

SQL | Challenges (중복값 조건에 맞춰서 제거)  (4) 2025.08.22
SQL | QCC 6회차  (0) 2025.03.14
SQL | QCC 5회차  (0) 2025.02.28
SQL | QCC 4회차  (0) 2025.01.21
SQL | Binary Tree Nodes, New Companies  (0) 2025.01.17