0

計算列に平均を表示させることができません。参照してください:

    Cast(AVG(COALESCE(mnth1.HandledCalls,0)+COALESCE(mnth2.HandledCalls,0)+COALESCE(mnth3.HandledCalls,0)) as Decimal(8,2))  as Avg_Handled,

3 つの列の平均を表示するにはどうすればよいですか? mnth2 と mnth3 が入力されていない場合があります。任意の時点でいずれかが null である場合に備えて、合体した月をカウントで除算しようとしました。選択リストが無効であるというエラーが表示されます。助言がありますか?

4

3 に答える 3

1

このようなもの?

cast(
    sum(
        coalesce(mnth1.HandledCalls, 0) +
        coalesce(mnth2.HandledCalls, 0) +
        coalesce(mnth3.HandledCalls, 0)
    )
as decimal(29, 10)) /
(
    count(mnth1.HandledCalls) +
    count(mnth2.HandledCalls) +
    count(mnth3.HandledCalls)
)
于 2013-08-22T18:25:01.703 に答える
0

次のことを試しましたか。

SELECT CAST(AVG(ZEROIFNULL(mnth1.HandledCalls) 
     + ZEROIFNULL(mnth2.HandledCalls) 
     + ZEROIFNULL(mnth3.HandledCalls) as Decimal(8,2))  as Avg_Handled
FROM ....

デフォルトでは、NULL 値は Teradata の集計関数によって無視されます。

于 2013-08-22T19:51:32.347 に答える
0

あなたは次のようなことができます

Cast(
     AVG((SELECT COALESCE(mnth1.HandledCalls,0) 
          UNION ALL SELECT COALESCE(mnth2.HandledCalls,0) 
          UNION ALL SELECT COALESCE(mnth3.HandledCalls,0) )) 
     AS  Decimal(8,2))  as Avg_Handled
于 2013-08-22T18:39:57.807 に答える