Oracle Sql中的三角形类型

时间:2019-03-05 06:23:43

标签: sql oracle

编写一个查询,该查询使用三个边长来标识TRIANGLES表中每个记录的类型。为表中的每个记录输出以下语句之一:

非三角形:A,B和C的给定值不构成三角形。 等边线:这是一个边长相等的三角形。 等腰:这是一个三角形,边长相等。 Scalene:这是一个边长不同的三角形。输入格式 TRIANGLES表描述如下:

表中的每一行表示一个三角形的三个边的长度。

样本输入

A  B  C  
------------
20 20 23 
20 20 20  
20 21 22  
13 14 30

样本输出

Isosceles
Equilateral
Scalene
Not A Triangle

我的代码不起作用:

Begin
If(a+b>c) or (a+c>b) or (b+c>a) then
if (a=b!=c) then
dbms_output.put_line ('Isosceles');
elseif (a=b=c)
dbms_output.put_line ('Equilateral');
else (a!=b=!c)
dbms_output.put_line ('Scalene');
endif;

else 
dbms_output.put_line ('Not A Triangle');
endif;
end;

1 个答案:

答案 0 :(得分:2)

IMO,您应该使用此

SELECT a, b, c,
    CASE  
        WHEN NOT ((a+b>c) AND (a+c>b) AND (b+c>a)) THEN 'Not A Triangle'
        WHEN a = b AND b = c THEN 'Equilateral'
        WHEN a = b OR b = c OR c = a THEN 'Isosceles'
        ELSE 'Scalene'
    END AS result
FROM table_name;

经过测试的in rextester

    A   B   C   RESULT
1   20  20  23  Isosceles
2   20  20  20  Equilateral
3   20  21  22  Scalene
4   13  14  30  Not A Triangle