1

mytable次の構造とデータを持つテーブルがあります (Oracle 11g)

Job_name    job_execution_time(JET in seconds)   Run_Date           records_processed
A1             0                                 7/1/2013           0
A1             0                                 7/5/2013           0
A1             3                                 7/12/2013          5
A1             9                                 7/22/2013          14
A1             0                                 8/1/2013           0
A1            15                                 8/16/2013          20 
A2             0                                 8/15/2013          0     
A2             0                                 8/17/2013          0
A2            10                                 9/15/2013          25
A2            45                                 9/17/2013          70   

その特定の月の各ジョブの (JET) 列の平均 (「0」値を無視) を取得しようとしています。また、平均計算に使用しているゼロ以外の値の数を取得する必要があります。例:の月の
ジョブの場合、JET 列の平均は になり、この平均の計算に使用されるゼロ以外の値の数は になります。 次のコードを使用して平均値を取得しましたが、カウントの取得に問題があります。A1July(9+3)/2 = 62

select job_name , to_char(Run_Date, 'Month') Mon ,
       nvl(avg(nullif(job_execution_time,0)), 0) Average_secs
from mytable
group by job_name, to_char(Run_Date, 'Month')

すべての平均の計算に使用されるゼロ以外の値の数を取得するにはどうすればよいですか? カウントのために次のことを試しましたが、うまくいきません。

  • count(nullif(job_execution_time, 0)) count_nonzeros
  • sum(CASE nvl(job_execution_time, 0) !=0 THEN 1 ELSE 0 END) AS "Count_NonZeros"

ありがとう。

4

1 に答える 1