[MSSQL] 해커랭크(HackerRank) - Occupations

develop_wan·2021년 12월 29일

HackerRank SQL

목록 보기
23/51
post-thumbnail

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


문제


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

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

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된 그룹별 순번 부여 기능
  • PIVOT
    SELECT [PIVOT열1], [PIVOT열2], ...
    FROM 테이블명
    PIVOT(나타내고자하는 값, FOR 행->열로 바꿀 열 IN ([PIVOT열1], [PIVOT열2], ...)) as 별칭

출처: https://doorbw.tistory.com/218?category=743841 [Tigercow.Door]

profile
서른. 개발자가 되기로 했다

0개의 댓글