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

이상현님의 프로필 이미지
이상현

작성한 질문수

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

CASE 해커랭크 문제풀이

-- 한 줄 주석처리 적용 안되는 문제 질문드려요~!

작성

·

426

1

SELECT

    CASE

        WHEN (A + B <= C) OR (B + C <= A) OR (C + A <= B) THEN 'Not A Triangle'

        WHEN (A = B AND B <> C) OR (B = C AND C <> A) OR (C = A AND A <> B)THEN 'Isosceles'

        WHEN A = B AND B = C THEN 'Equilateral'

        --WHEN (A <> B) AND (B <> C) AND (C <> A) THEN 'Scalene'

        ELSE 'Scalene' 

     END

FROM triangles;

 

질문1)

빨간색 부분이 제가 원래 작성했었던 WHEN THEN 구문인데요, else로 처리 하는 게 간명하다고 생각되어, 주석처리 한 후 ELSE 문으로 작성하였는데, 계속 오류가 뜨더라구요.

주석 처리된 부분을 지우면 정답처리 되었습니다.

주석처리한 줄은 결과에 영향을 안미쳐야하는데, 어떻게 된 것일까요...?

 

질문2)

밑줄친 부분처럼 조건을 작성할 경우, 정삼각형 조건과 순서에 상관 없이 적용이 잘 되는데요, 이렇게 작성해도 되겠죠?혹시 조건이 길어져서 더 안좋다던가 하는 게 있나요?

답변 1

2

이보민님의 프로필 이미지
이보민
지식공유자

안녕하세요 이상현님

1) 아래와 같이 주석처리(--) 후 코드 시작 전 띄어쓰기를 해주시면 에러가 나지 않고 주석처리가 됩니다. 에디터 오류인 것 같습니다.

-- WHEN (A <> B) AND (B <> C) AND (C <> A) THEN 'Scalene'

2) 말씀해주신 정도의 연산 조건의 갯수나 순서 때문에 연산 속도에 큰 영향이 있을 것 같지는 않아 보입니다. 쿼리 속도와 관련해서는 실제 DB에 셋팅된 조건과 인프라 상황에 따라 달라질 수 있으므로 정확하게 답변드리기 어려운 점 양해 부탁드립니다.

이상현님의 프로필 이미지
이상현
질문자

띄어쓰기를 해야했군요.. 답변 감사합니다^^

이상현님의 프로필 이미지
이상현

작성한 질문수

질문하기