해결된 질문
작성
·
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
질문 주셔서 감사합니다.