728x90
728x90
문제
https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true
각 이름이 알파벳 순으로 정렬되고 해당 직업 아래에 표시되도록 직업의 직업 열을 피벗합니다. 출력 열 머리글은 각각 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 별칭
728x90
300x250
'SQL > HACKERRANK' 카테고리의 다른 글
New Companies / 새로운 회사 (1) | 2024.01.08 |
---|---|
Binary Tree Nodes / 이진트리 조회 (2) | 2024.01.06 |
The PADS / 사람에 따른 직업표시, 직업 수 조회 (1) | 2023.12.29 |
Type of Triangle / 삼각형 판단하기 (0) | 2023.12.27 |
Employee Salaries / 조건에 의한 회사원 이름 조회 (1) | 2023.12.23 |