Hello coders, today we are going to solve Type of Triangle HackerRank Solution in SQL.

Problem
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 A, B, and C don’t form a triangle.
Input Format
The TRIANGLES table is described as follows:
Column | Type |
---|---|
A | Integer |
B | Integer |
C | Integer |
Each row in the table denotes the lengths of each of a triangle’s three sides.
Sample Input
A | B | C |
---|---|---|
20 | 20 | 23 |
20 | 20 | 20 |
20 | 21 | 22 |
13 | 14 | 30 |
Sample Output
Isosceles
Equilateral
Scalene
Not A Triangle
Explanation
Values in the tuple (20, 20, 30) 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 – Type of Triangle in SQL
MySQL
select if(A+B<=C or B+C<=A or A+C<=B,"Not A Triangle", if(A=B and B=C,"Equilateral", if(A=B or B=C or A=C,"Isosceles","Scalene"))) from TRIANGLES as T;
Disclaimer: The above Problem (Type of Triangle) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.
PLEASE DO EXPLAIN SOLUTION ALSO.
I entered a solution for mssql into HackerRank for the triangle table
SELECT
case when (A+B<=c or A+C<=B or C+B<=A) then 'Not a Triangle' else
case when (A=B and B=C) then 'Equilateral' else
case when (A=B or B=C or A=C) then 'Isosceles'
else 'Scalene' end end end from triangles;
It said it was wrong. I created the triangles table on my mssql server and entered the example data. It executed and returned the example results. But it keeps saying it is wrong in HackerRank. I do not know why.
Ok, I found out why
SELECT
case when (A+B<=c or A+C<=B or C+B<=A) then 'Not a Triangle' else
case when (A=B and B=C) then 'Equilateral' else
case when (A=B or B=C or A=C) then 'Isosceles'
else 'Scalene' end end end from triangles;
does not work it should have been 'Not A Triangle'. capital A
–THIS IN MS SQL gave a correct answer
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 ) OR (B=C ) OR (C=A)) then 'Isosceles'
when (AB AND AC AND BC) AND NOT ((A+ B <= C) OR (B+C <= A) OR (A+C <= B)) then 'Scalene'
end
from Triangles
SELECT CASE
WHEN ((A+B<=C) OR (A+C<=B) OR (B+C<=A)) THEN 'Not A Triangle'
WHEN ((A=B) AND (AC)) OR ((A=C) AND (AB)) OR ((B=C) AND (AB)) THEN ‘Isosceles’
WHEN ((A=B) AND (B=C)) THEN ‘Equilateral’
WHEN ((AB) AND (AC) AND (BC)) AND NOT ((A+B<=C) OR (A+C<=B) OR (B+C<=A)) THEN 'Scalene'
END
FROM TRIANGLES;
The correct answer after applying all conditions 😀
this worked for me
select
–a,b,c ,
case
when ( a = b ) and ( b = c) then ‘Equilateral’
when ((a + b)<= c) or ((b + c)<= a or ((c + a)<= b)) then 'Not A Triangle'
when (a = b) or (b = c) or (c = a) then 'Isosceles'
when (a b) or (b c) or (c a) then ‘Scalene’
end as result
from TRIANGLES
my bad
select
–a,b,c ,
case
when ( a = b ) and ( b = c) then ‘Equilateral’
when ((a + b)<= c) or ((b + c)<= a) or ((c + a)<= b) then 'Not A Triangle'
when (a = b) or (b = c) or (c = a) then 'Isosceles'
when (a b) or (b c) or (c a) then ‘Scalene’
end as result
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 ) OR (B=C ) OR (C=A)) then 'Isosceles'
when ((A != B) and (B != C) and (A != c)) then 'Scalene'
end
from Triangles;
HI,
IF I WRITE ‘NOT A TRIANGLE’ QUERY IN THE LAST LINE THEN IT’S ERROR SHOWING.
COULD SOMEBODY EXPLAIM ME WHY?
SELECT CASE
WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle'
WHEN A = B AND B = C THEN 'Equilateral'
WHEN A = B OR B = C OR A = C THEN 'Isosceles'
ELSE 'Scalene'
END
FROM TRIANGLES;
(corrected one)
instead of ‘Not a Triangle’ write ‘Not A Triangle’