Write a query identifying thetypeof each record in theTRIANGLEStable using its three side lengths. Output one of the following statements for each record in the table:
Equilateral: It's a triangle with 3sides of equal length.
Isosceles: It's a triangle with 2sides of equal length.
Scalene: It's a triangle with 3sides of differing lengths.
Not A Triangle: The given values ofA,B, andCdon't form a triangle.
Input Format
TheTRIANGLEStable 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 ≡ B. Values in the tuple (20, 20, 20)form an Equilateral triangle, becauseA ≡ B ≡ C. Values in the tupleform a Scalene triangle, becauseA ≠ B≠ C. Values in the tuple (13, 14, 30)cannot form a triangle because the combined value of sides Aand Bis not larger than that of side C.
My Answer
with tbl (a,b,c, max_v, min_v , med_v) as
(
select a,b,c,
greatest(a,b,c),
least(a,b,c),
a+b+c - (greatest(a,b,c) + least(a,b,c))
from triangles
)
select case when max_v = min_v then 'Equilateral'
when max_v >= (med_v + min_v) then 'Not A Triangle'
when (max_v = med_v) or (min_v = med_v) then 'Isosceles'
else 'Scalene'
end
from tbl
Result
Equilateral
Equilateral
Isosceles
Equilateral
Isosceles
Equilateral
Scalene
Not A Triangle
Scalene
Scalene
Scalene
Not A Triangle
Not A Triangle
Scalene
Equilateral