我得到一個除0錯誤與此代碼:紅移被零除益智遊戲
CASE
WHEN DENOMINATOR >= 0
THEN SUM(INT1 * INT2/DENOMINATOR)
ELSE 0
END AS RATIO
但是當我改成下面的代碼,它的工作。
CASE
WHEN DENOMINATOR >= 0
THEN SUM(INT1) * INT2/DENOMINATOR
ELSE 0
END AS RATIO
有人能幫我理解原因,所以我可以在將來避免這種情況嗎?順便說一句,第一個樣品在Vertica中工作。我認識到總結需要總結的內容,而不是在求和之前進行計算,這是一個更好的編程實踐。但仍然很好奇。
'CASE WHEN DENOMINATOR> = 0' .... ....似乎是錯的...如果你試圖避免0錯誤的分裂......你不是指'>'0不是'> ='或只要'<>'0,如果你想允許否定? – xQbert
我猜是否定的分母應該是0.因此,其他的只是> not> = – xQbert
負數問題與問題無關。關鍵是DEMONIMATOR不應該是零。我試圖理解爲什麼一個人工作,另一個人給我一個錯誤。 – cjremley