인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

안녕님의 프로필 이미지
안녕

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이

4번 문제 풀이

occupation 질문!

해결된 질문

작성

·

263

·

수정됨

0

 

 

안녕하세요 선생님! 강의 잘 듣고 있습니다.

해당 문제 이렇게도 풀이했는데 답은 정상적으로 나오나 hackerranks에서는 오답으로 나와서 질문드립니다!

이렇게 풀어도 되는지, 어떤 부분에 주의해야할지 여쭤볼 수 있을까요?

 

SELECT 
    SUM(CASE WHEN sub.occupation='Doctor' THEN sub.name ELSE NULL END) doctor,
    SUM(CASE WHEN sub.occupation='Professor' THEN sub.name ELSE NULL END) professor,
    SUM(CASE WHEN sub.occupation='Singer' THEN sub.name ELSE NULL END) singer,
    SUM(CASE WHEN sub.occupation='Actor' THEN sub.name ELSE NULL END) actor
FROM (
    SELECT name, occupation, ROW_NUMBER() OVER(PARTITION BY occupation ORDER BY NAME) AS number
    FROM occupations) AS sub
GROUP BY sub.number
ORDER BY sub.number;
SELECT (SELECT name FROM occupation WHERE occupation = 'Doctor'), 
    (SELECT name FROM occupation WHERE occupation = 'Professor'),
    (SELECT name FROM occupation WHERE occupation = 'Singer'),
    (SELECT name FROM occupation WHERE occupation = 'Actor')
FROM occupation
ORDER BY name

답변 1

0

윤선미님의 프로필 이미지
윤선미
지식공유자

안녕하세요 :)

저도 질문 주신걸 보고 좀 찾아봤는데요. SUM 함수가 문자열 계산을 못해줘서 생기는 문제네요.

SUM 함수 대신에 MIN 또는 MAX 함수를 사용하시면 됩니다. 아래 쿼리를 실행하고 결과를 보시면 이해가 되실거예요!

SELECT MIN('Doctor')
     , MAX('Doctor')
     , SUM('Doctor')
FROM occupations

질문 주셔서 감사합니다.

안녕님의 프로필 이미지
안녕

작성한 질문수

질문하기