我已经在SO上看过了,但我想知道是否有最佳实践"或者有利于在之前或之后合并这笔金额:
coalesce(sum(value),0) OR sum(coalesce(value),0)
好奇......
答案 0 :(得分:10)
他们不做同样的事情。如果没有记录,将COALESCE
置于内部则无效。将它放在外面会将结果更改为0
。使用哪个取决于您想要的结果。
答案 1 :(得分:7)
SQL引擎可能会对此进行优化,但使用
coalesce(sum(value),0)
可能会快一些,因为可以在不需要处理函数的情况下完成求和,最后coalesce
被称为一次。
对于每个记录,secone版本会调用coalesce
,如果求和中有0
个值,则将值设置为null
。