HackerRank: Query a Triangle’s Type Based on its side lengths. (Types of Trianlge)

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:

ColumnType
A            Integer
BInteger
CInteger

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

Sample Input

A  B  C
202023
202020
202122
131430

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

To solve this query I am using MySQL CASE Function

The CASE function in MySQL allows you to perform conditional logic in a SQL statement. It checks a condition and returns a value if the condition is true or false. You can use it to check for multiple conditions and return different results based on those conditions. If none of the conditions are true, you can specify a default value to be returned.

Syntax: 

CASE
   WHEN condition1 THEN result1
   WHEN condition2 THEN result2
   WHEN condition3 THEN resultN
   ELSE result
END;

Solution :

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;

Output: 

Equilateral
Equilateral
Isosceles
Equilateral
Isosceles
Equilateral
Scalene
Not A Triangle
Scalene
Scalene
Scalene
Not A Triangle

Explanation:

In the above query, we have used MySQL CASE Function. In the case statement, I have written the first condition with | (OR) Operator

if this statement is true then we will get “Not A Triangle” Output.
If the second condition is true then we will get an ‘Equilateral’ Output.
If the third condition is true then we will get ‘Isosceles’ Output.
If the fourth condition is true then we will get ‘Scalene’ Output.

if you are learning SQL then this site will help you a lot. I solve various SQL questions and explain them on this site. I am now solving SQL questions on HackerRank and writing explanations of Solutions on this site. I request you to share this site with your friends as well.

Read This –

Leave a Comment

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

Scroll to Top