我有一個查詢如何獲得列值不等於零的平均值?
Select AVG(((cast(c.rating1 as Float)+ cast(c.rating2 as Float)+cast (c.rating3 as Float)+cast(c.rating4 as Float)+cast(c.rating5 as Float))/5))
From CSEReduxResponses c
Where
c.execoffice_date BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, @today)-1, 0)
AND DATEADD(MONTH, DATEDIFF(MONTH, -1, @today)-1, -1)
AND c.execoffice_status =1
AND C.rating1 <> 0 AND C.rating2 <> 0 AND C.rating3 <> 0 AND C.rating4 <> 0 AND
C.rating5 <> 0
當我得到等級1-5的平均水平,但我還指望收視率,其中等於「0」。
我怎樣才能得到它只能算一個等級,其中等級[X]不等於「0」? 它仍然會計數,除了除以5之外,它會將它除以有多少列不是'0'。
我創建了一個< http://sqlfiddle.com/#!3/570fa/7>
如果您標準化架構你的生活會更容易些:你應該是在它自己的子表中的每個等級在一個單獨的行 – Bohemian
具體表達取決於是否我們保證「重複組」是ratingN永遠是非NULL還是取決於如何處理來自'cast(ratingN As Float)'的NULL值。 – spencer7593