编写一个查询,该查询使用三个边长来标识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;
答案 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