공부/SQL
[SQL] 문제풀이 TYPE OF TRIANGLE
porkbellyYam
2023. 3. 31. 00:15
삼각형을 판별하는 쿼리문을 작성하는데 아주 기초적인 실수를 했다.
문제를 먼저 설명하자면,
삼각형의 각 변의 길이가 저장된 TRIANGLES라는 테이블이 있고 각 변의 길이는 A, B, C라는 컬럼에 저장이 되어있다.
이걸 이용해서 삼각형의 타입을 판별하는 문제였는데.. CASE를 이용해서 풀어보는것 까진 맞았다. 조건식도 대충 맞게 쓴것 같았는데 계속해서 에러가 발생했다.
SELECT
CASE
WHEN(A=B AND B=C) THEN 'Equilateral'
WHEN(A=B OR B=C OR C=A) THEN 'Isosceles'
WHEN(A<>B AND B<>C) THEN 'Scalene'
WHEN(A+B<=C OR B+C<=A OR C+A<=B) THEN 'Not A Triangle'
END as TYPE
FROM TRIANGLES
OUTPUT을 살펴보니 NOT A TRIANGLE 결과값이 하나도 존재하지 않았다. CASE조건식은 순서대로 실행되기 때문에 NOT A TRIANGLE 이라는 값을 반환해야 하는 레코드가 Scalene 의 조건식을 만족해 버려서 Scalene를 반환해버렸다. 순서가 중요하다는 기초적인 걸 깜빡해서 고생을 했다. -- 하여튼 나란 빡대가리는 진짜 화가난다.
SELECT
CASE
WHEN(A+B<=C OR B+C<=A OR C+A<=B) THEN 'Not A Triangle'
WHEN(A=B AND B=C) THEN 'Equilateral'
WHEN(A=B OR B=C OR C=A) THEN 'Isosceles'
WHEN(A<>B AND B<>C) THEN 'Scalene'
END as TYPE
FROM TRIANGLES
이렇게 되면 정상작동함.