我在这段代码中遇到了除以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中有效。我意识到只对需要求和的部分进行求和而不是在求和之前进行计算是更好的编程实践。 但是,我仍然很好奇。