728x90

문제

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

각 이름이 알파벳 순으로 정렬되고 해당 직업 아래에 표시되도록 직업의 직업 열을 피벗합니다. 출력 열 머리글은 각각 Doctor, Professor, Singer, and Actor여야 합니다.

참고: 직업에 해당하는 이름이 더 이상 없을 경우 NULL을 인쇄하십시오.

 

 

 

 

 

 

풀이(MSSQL)

SELECT 
    [Doctor],[Professor],[Singer],[Actor]
FROM
    (
    SELECT ROW_NUMBER() OVER (PARTITION BY OCCUPATION ORDER BY NAME) [RowNumber], * 
      FROM OCCUPATIONS
    ) AS tempTable
PIVOT
    (
    MAX(NAME) FOR OCCUPATION IN ([Doctor],[Professor],[Singer],[Actor])
    ) AS pivotTable

 

새로 알게된 것

  • ROW_NUMBER() OVER ([PARTITION BY value_expression, ... [n]] order_by_clause)
    PRTITION된 그룹별 순번 부여 기능
  • PIVOTSELECT [PIVOT열1], [PIVOT열2], ...FROM 테이블명
    PIVOT(나타내고자하는 값, FOR 행->열로 바꿀 열 IN ([PIVOT열1], [PIVOT열2], ...)) as 별칭
300x250