Anusha Murali

Logo

Please see github.com/anusha-murali for all of my repositories.

View GitHub Profile

41. Type of Triangle: Solution


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:

The TRIANGLES table is described as follows:

41_1

Each row in the table denotes the lengths of each of a triangle’s three sides.

Sample Input

41_2

Sample Output

Isosceles
Equilateral
Scalene
Not A Triangle

Explanation

Values in the tuple (20, 20, 23)form an Isosceles triangle, because A ≡ B. Values in the tuple (20, 20, 20) form an Equilateral triangle, because A ≡ B ≡ C. Values in the tuple (20, 21, 22) form a Scalene triangle, because A ≠ B ≠ C. Values in the tuple (13, 14, 30) cannot form a triangle because the combined value of sides A and B is not larger than that of side C.

solution_image5

Note that there’s no IF keyword in SQL. If you want to do IF-THEN-ELSE logic in the SELECT clause,WHERE clause or anywhere else in a statement, you need a CASE expression. The database processes the CASE expression from top-to-bottom. It returns the value for the first when clause that is true. If none are true, it returns the value in the ELSE clause. We can use a CASE expression to construct this query as follows:

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

Back to problems


anusha-murali.github.io