• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

occupation 질문!

22.12.07 18:43 작성 22.12.14 18:17 수정 조회수 173

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

질문 주셔서 감사합니다.