반응형
문제
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)을 알파벳 순으로 정렬하여 출력합니다.
출력 열 헤더는 각각 Doctor, Professor, Singer, Actor여야 합니다.
참고: 직업에 해당하는 이름이 더이상 없으면 NULL을 출력합니다.
행을 열로 바꾸는 문제입니다.
풀이
MIN, DECODE를 통해 구현할 수 있습니다.
SELECT MIN(DECODE(OCCUPATION, 'Doctor', NAME)) Doctor
, MIN(DECODE(OCCUPATION, 'Professor', NAME)) Professor
, MIN(DECODE(OCCUPATION, 'Singer', NAME)) Singer
, MIN(DECODE(OCCUPATION, 'Actor', NAME)) Actor
FROM (
SELECT OCCUPATION, NAME
, ROW_NUMBER() OVER(PARTITION BY OCCUPATION ORDER BY NAME) RN
FROM OCCUPATIONS
)
GROUP BY RN
ORDER BY 1, 2, 3, 4
;
Oracle 11g 이상 버전의 경우 PIVOT 함수를 사용할 수도 있습니다.
SELECT Doctor, Professor, Singer, Actor
FROM (
SELECT OCCUPATION, NAME
, ROW_NUMBER() OVER(PARTITION BY OCCUPATION ORDER BY NAME) RN
FROM OCCUPATIONS
)
PIVOT (
MIN(NAME) FOR OCCUPATION IN ('Doctor' AS Doctor
, 'Professor' AS Professor
, 'Singer' AS Singer
, 'Actor' AS Actor)
)
ORDER BY 1, 2, 3, 4
;
결과
반응형
'SQL' 카테고리의 다른 글
[프로그래머스] SQL 고득점 Kit : JOIN 풀이 (Oracle) (0) | 2021.03.31 |
---|---|
[HackerRank] Print Prime Number 풀이 (Oracle) (0) | 2021.03.18 |
[HackerRank] Binary Tree Nodes 풀이 (Oracle) (0) | 2021.03.16 |
[HackerRank] Weather Observation Station 20 풀이 (Oracle) (0) | 2021.03.15 |
[HackerRank] Interviews 풀이 (Oracle) (0) | 2021.03.10 |
[HackerRank] 15 Days of Learning SQL 풀이 (Oracle) (0) | 2021.02.27 |
[HackerRank] Weather Observation Station 5 풀이 (Oracle) (0) | 2021.02.26 |
댓글