song's note

[Hackerrank - SQL] Type of Triangle 본문

공부/SQL

[Hackerrank - SQL] Type of Triangle

songxx 2022. 6. 21. 14:02

문제 

A,B,C 로 삼각형 세 변의 길이가 주어질 때,

각 경우에 따라서 어떤 삼각형인지 혹은 삼각형이 아님을 출력하라. 

 

Write a query identifying the type of each record in the TRIANGLES table using its three side lengths. Output one of the following statements for each record in the table:

  • Equilateral: It's a triangle with  sides of equal length.
  • Isosceles: It's a triangle with  sides of equal length.
  • Scalene: It's a triangle with  sides of differing lengths.
  • Not A Triangle: The given values of A, B, and C don't form a triangle.

 

 

풀이

SELECT  
    CASE  WHEN A = B AND B = C THEN 'Equilateral'
    	  WHEN A >= B+C OR B >= A+C OR C >= A+B THEN 'Not A Triangle'
          WHEN A = B OR A = C OR B = C THEN 'Isosceles' 
          ELSE 'Scalene' END 
FROM TRIANGLES;

다른 사람의 풀이를 찾다가 

CASE WHEN을 여러겹으로 사용하는 풀이를 발견하였다. 

SELECT 
    CASE WHEN A + B > C AND A + C > B AND B + C > A THEN 
        CASE WHEN A = B AND B = C THEN 'Equilateral'
             WHEN A = B OR A = C OR B = C THEN 'Isosceles'
        ELSE 'Scalene' END
    ELSE 'Not A Triangle' END
FROM TRIANGLES;

마치 파이썬에서 if를 여러번 사용하는 것처럼... 

오늘도 하나 배웠다.