Triange
테이블 칼럼 x,y,z 는 삼각형 각 변의 길이 정보를 담고 있다.
삼각형 구성 가능 여부 정보를 담는 칼럼 triangle
를 추가하라는 문제.
삼각형 구성 조건:
가장 긴 변의 길이가 나머지 두 변의 합 보다 작아야 한다.
위 조건을 충족하기 위해 나는 case when을 사용했다.
case when x + y > z then 'Yes'
when x + z > y then 'Yes'
when y + z > x then 'Yes'
else 'No'
end as 'triange'
하지만 실패했다. 왜 일까? 이유는 다음과 같다.
오답 이유:"가장 긴 변 조건"을 충족하지 못해서
when x + y > z then 'Yes'
조건을 충족하지 못해 No
가 나오지만 그 다음 조건 when x + z > y then 'Yes'
조건을 충족하여 No
가 Yes
로 바뀌게 된다.No
가 아니라 Yes
로 잘못 출력된다. "가장 긴 변의 길이가 나머지 두 변의 합 보다 작아야 한다" 는 조건을 충족하려면 case 절에서 사용한 3개의 when 조건을 모두 충족해야 한다.
따라서 정답 쿼리는 다음과 같다.
select
x,
y,
z,
case when x + y > z and x + z > y and y + z > x then 'Yes'
else 'No'
end as 'triangle'
from triangle
생각보다 까다로운 삼각형 ㅋ
and를 통해 강력한 조건을 만들 수 있다는 것을 항상 기억하자.