Type of Triangle in SQL | HackerRank Solution

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

Type of Triangle in SQL

Contents

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 AB, and C don’t form a triangle.

Input Format

The TRIANGLES table is described as follows:

ColumnType
AInteger
BInteger
CInteger

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

Sample Input

ABC
202023
202020
202122
131430

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.

8 thoughts on “Type of Triangle in SQL | HackerRank Solution”

  1. 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.

  2. 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

  3. –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

  4. 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 😀

  5. 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

    1. 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

  6. mohamed nasr

    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;

Leave a Comment

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