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 列の平均は になり、この平均の計算に使用されるゼロ以外の値の数は になります。
次のコードを使用して平均値を取得しましたが、カウントの取得に問題があります。A1
July
(9+3)/2 = 6
2
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"
ありがとう。