Write a query identifying the type of each record in the TRIANGLES table using its three side lengths

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 3 sides of equal length.
  • Isosceles: It’s a triangle with 2 sides of equal length.
  • Scalene: It’s a triangle with 3 sides of differing lengths.
  • Not A Triangle: The given values of AB, and C don’t form a triangle.

Input Format

The TRIANGLES table is described as follows:

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

Sample Input

Sample Output

Isosceles

Equilateral

Scalene

Not A Triangle

Explanation

Values in the tuple (20,20,23) form an Isosceles triangle, because \(A \equiv B \).
Values in the tuple (20,20,20) form an Equilateral triangle, because \(A \equiv B  \equiv \). Values in the tuple (20,21,22) form a Scalene triangle, because \(A \neq B \neq 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———-

SELECT IF(A+B>C AND A+C>B AND B+C>A,
IF(A=B AND B=C,'Equilateral',
IF(A=B OR B=C OR A=C,
'Isosceles',
'Scalene')),
'Not A Triangle') FROM TRIANGLES;

OR

SELECT CASE WHEN (A + B <= C) | (B + C <= A) | (A + C <= B) THEN 'Not A Triangle' WHEN (A = B) & (B = C) THEN 'Equilateral' WHEN ((A = B) & (A != C)) | ((B = C) & (B != A)) | ((A = C) & (A != B)) THEN 'Isosceles' WHEN (A != B) & (B != C) & (A != C) THEN 'Scalene' END AS Triangle_Type FROM TRIANGLES;

OR

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

 

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *