SQL/HackerRank
[MySql/HackerRank] Occupations 문제 풀이
레아킴
2022. 5. 12. 13:47
반응형
https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true
occupation 별로 순서대로 리턴을 해줘야하니 ROW_NUMBER 함수를 사용했다.
GROUP BY는 GROUP BY에 정의한 내용(컬럼 또는 변형된 컬럼)만 SELECT절에 그대로 사용할 수 있다. GROUP BY에 정의하지 않은 컬럼을 SELECT절에서 사용하려면 반드시 집계함수 처리를 해야 한다.
그래서 나는 MAX 함수를 사용하였다. 사실 MAX든, 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 *
,ROW_NUMBER() over (PARTITION BY Occupation ORDER BY name) rn
FROM OCCUPATIONS) t
GROUP BY rn
반응형