Problem statement:
Write a query identifying the type of each record in the TRIANGLES table using its three side lengths. Output one of the followin
SELECT
CASE
WHEN (A > 0 AND B > 0 AND C > 0 AND (A + B > C) AND (B + C > A) AND (A + C > B))
THEN
(
CASE
WHEN (A = B AND B = C) THEN 'Equilateral'
WHEN (A = B OR B = C OR A = C) THEN 'Isosceles'
ELSE 'Scalene'
END
)
ELSE 'Not A Triangle'
END
FROM TRIANGLES;
SELECT
CASE
WHEN (A+B>C AND B+C>A AND A+C>B) THEN
(CASE
WHEN A=B AND B=C AND A=C THEN 'Equilateral'
WHEN A=B OR B=C OR A=C THEN 'Isosceles'
ELSE 'Scalene'
END)
ELSE 'Not A Triangle'
END
FROM TRIANGLES;
this answer is working well in sql * plus but not in hackerrank i dont know why? try this.
declare
cursor mytriangle is select A,B,C from triangles;
a triangles.A %type;
b triangles.B %type;
c triangles.C %type;
begin
open mytriangle;
if mytriangle%isopen then
loop
fetch mytriangle into a,b,c;
exit when mytriangle %notfound;
case
when a+b<=c or b+c<=a or a+c<=b then
dbms_output.put_line('Not A Triangle');
when a=b and b=c then
dbms_output.put_line('Equilateral');
when a=b or b=c or c=a then
dbms_output.put_line('Isoceles');
when a+b>=c and b+c>=a and a+c>=b and a!=b and b!=c and c!=a then
dbms_output.put_line('Scalene');
else
dbms_output.put_line('');
end case;
end loop;
close mytriangle;
else dbms_output.put_line('cannot open the cursor');
end if;
end;
SELECT CASE
WHEN A+B>C AND B+C>A AND A+C>B 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
Step 1: First we select case to check if given input is a triangle or not
Step 2: If it is a triangle then check for its type. So first case if all sides are the same, then the triangle type is 'Equilateral'
, then second case if any two sides are the same then the triangle type is 'Isosceles'
, otherwise the triangle type is 'Scalene'
.
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;
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 AND C<>B)or(B=C AND C<>A)or(A=C AND A<>B) then 'Isosceles'
else 'Scalene'
end as triangle_type
from TRIANGLES;
here, it will strictly check for the type of the triangles.