율코딩

[MySql/HackerRank] Occupations 문제 풀이 본문

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

 

반응형
Comments