2016-11-11 3 views
1

avg(examinee_grade_science + ...)の使い方を繰り返すにはどうしたらいいですか?SELECT内で長い式を割り当てるにはどうしたらいいですか?

ご覧のとおり、CASEの表現の下で繰り返しました。それを変数に代入してCASE式で使用できますか?

SET (set @ave_grade = examine_grade...)を試しましたが、機能しません。 とにかく可能でしょうか?

select 
    examinee_grade_science as "Science Grade", 
    examinee_grade_math as "Math Grade", 
    examinee_grade_literature as "Literature Grade", 
    examinee_grade_science + examinee_grade_math + examinee_grade_literature as "TOTAL", 
    avg(examinee_grade_science + examinee_grade_math + examinee_grade_literature) as "AVERAGE", 
    case when avg(examinee_grade_science + examinee_grade_math + examinee_grade_literature) < 93 
     then 'PASSED' 
     else 'FAILED' 
    end as "REMARKS" 
from examinee 
+0

なぜ機能しないのですか?エラーまたは不正確な値は何ですか? – jelliaes

+0

ただそれを簡素化して、長く見えないようにしたい –

答えて

0

平均エイリアスを使用しようとしましたか? Teradataでは、case文でエイリアスを使用できます。 SQLサーバーに存在するかどうか確認してください。

select 
       examinee_grade_science as "Science Grade", 
       examinee_grade_math as "Math Grade", 
       examinee_grade_literature as "Literature Grade", 
       examinee_grade_science + examinee_grade_math + examinee_grade_literature as "TOTAL", 
       avg(examinee_grade_science + examinee_grade_math + examinee_grade_literature) as "AVERAGE", 


       case when AVERAGE < 93 
        then 'PASSED' 
        else 'FAILED' 
       end as "REMARKS" 


from examinee 
+0

私はちょうど試しました、それは動作していません。 :< –

+0

あなたの質問にグループも表示されません。あなたの側からちょうどタイプミスを願っています。 –

+0

私もそう思っています。でも、私はまだこの初心者です。私を許してください。 –

3

平均を計算して、パス/フェイル

ため

てみクエリ(未テスト)

;with cte as (
select 
       examinee_grade_science as "Science Grade", 
       examinee_grade_math as "Math Grade", 
       examinee_grade_literature as "Literature Grade", 
       examinee_grade_science + examinee_grade_math + examinee_grade_literature as "TOTAL" 
from examinee) 
select *,avg(Total) as "Total",case when avg(Total)<93 then 'PASSED' else 'FAILED' end as "REMARKS" from cte 
以下
SELECT *, 
case when AVERAGE < 93 
        then 'PASSED' 
        else 'FAILED' 
       end as "REMARKS" 
FROM 
(
    select 
        examinee_grade_science as "Science Grade", 
        examinee_grade_math as "Math Grade", 
        examinee_grade_literature as "Literature Grade", 
        examinee_grade_science + examinee_grade_math + examinee_grade_literature as "TOTAL", 
        avg(examinee_grade_science + examinee_grade_math + examinee_grade_literature) as "AVERAGE" 



    from examinee 
) t 
+0

それは実際に働いた!うわー!ありがとう!わたしは、あなたを愛しています!!! –

+0

これはどのように回答したと思いますか?申し訳ありませんまだまだ新しいここ –

+0

笑いをクリックして目盛りを緑にする –

0
をチェックするために、外側のクエリでcalculkated平均に割り当てられたエイリアスを使用するサブクエリを使用します
2

CROSS APPLYを使用して式のエイリアスを作成します。

select 
    examinee_grade_science as "Science Grade", 
    examinee_grade_math as "Math Grade", 
    examinee_grade_literature as "Literature Grade", 
    grade_sum as "TOTAL", 
    avg(grade_sum) as "AVERAGE", 
    case when avg(grade_sum) < 93 
     then 'PASSED' 
     else 'FAILED' 
    end as "REMARKS" 
from 
    examinee 
    CROSS APPLY 
    (
     SELECT 
      examinee_grade_science + examinee_grade_math + examinee_grade_literature AS grade_sum 
    ) AS A 
; 
関連する問題