https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true
TABLE NAME : OCCUPATIONS
1) 서브쿼리로 직업별로 이름을 알파벳 순으로 출력
ROW_NUMBER() 함수는 각 직업별로 이름을 알파벳 순서대로 정렬하고, 그 순서에 따라 번호를 매긴다.
PARTITION BY OCCUPATION은 직업별로 데이터를 그룹화합니다. 즉, 각 직업에 대해 독립적으로 순번을 매긴다.
2) MAX(CASE..)구문
3) MAX 함수를 사용한 이유는 GROUP BY때문에 (MIN함수를 사용해도 상관없다.)
SELECT MAX(CASE WHEN OCCUPATION = 'Doctor' THEN NAME END),
MAX(CASE WHEN OCCUPATION = 'Professor' THEN NAME END),
MAX(CASE WHEN OCCUPATION = 'Singer' THEN NAME END),
MAX(CASE WHEN OCCUPATION = 'Actor' THEN NAME END)
FROM(
SELECT NAME, OCCUPATION,
ROW_NUMBER() OVER(PARTITION BY OCCUPATION ORDER BY NAME) AS MB
FROM OCCUPATIONS
) AS SUB
GROUP BY MB