2017-02-24 5 views
-5

このコードで何が間違っているか教えてください。 次のスニペットの「2行目のエラー: ORA-00907:右括弧が欠落しています。私を助けてください。三角形を等価、二等辺三角形などに分類するSQLクエリ

select (
IF (A = B or B = C or C = A) THEN 
DBMS_OUTPUT.PUT_LINE('Isosceles') 
ELSIF (A=B and B=c) THEN 
DBMS_OUTPUT.PUT_LINE('Equilateral') 
ELSIF (A != B) and (B != C) and (A+B>C or B+C>A or A+C>B)THEN 
DBMS_OUTPUT.PUT_LINE('Scalene') 
ELSE 
DBMS_OUTPUT.PUT_LINE('Not A Triangle') 
END IF 
) 
from triangles; 
+0

あなたのコードは構文エラーで詰まっています... – Siyual

+0

3つの側面のすべてが等しい平均イソゾールである必要はありませんか? Not "または" - "と"。 – duffymo

+0

いいえ、Oracleクエリでは 'IF-ELSE'文を使用できません。 'CASE'を検索してください。また、問合せでは 'DBMS_OUTPUT.PUT_LINE'を使用できません。 –

答えて

2

CASE文はORDERで評価されることに注意してください。最初のWHEN句は "wins"に収まり、それ以上の評価は行われません。したがって:

with 
    triangles (A, B, C) as (
     select 20, 20, 23 from dual union all 
     select 20, 20, 20 from dual union all 
     select 20, 21, 22 from dual union all 
     select 13, 14, 30 from dual 
    ) 
select A, B, C, 
     case 
      when A+B <= C or B+C <= A or C+A <= B 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 as classification 
from triangles 
; 

    A B C CLASSIFICATION 
--- --- --- -------------- 
20 20 23 Isosceles 
20 20 20 Equilateral 
20 21 22 Scalene 
13 14 30 Not A Triangle 

4 rows selected. 
+0

ありがとうございます@mathguy – Vish

+0

今私はURコードを使用していますが、まだ出力が間違っています。なぜ私は分からない。以下は、私が試している課題です: 可能であれば、試してみてください。 https://www.hackerrank.com/challenges/what-type-of-triangle – Vish

+0

@Vish - 「出力が間違っています」doesn大したことはありません。なにが問題ですか?あなたが入れた3つの数字とその結果を表示して、正しいかどうか議論することができます。 – mathguy

関連する問題