哪个最正确 - 合并(sum(value))OR sum(coalesce(value))?

时间:2016-05-08 10:06:21

标签: sql

我已经在SO上看过了,但我想知道是否有最佳实践"或者有利于在之前或之后合并这笔金额:

coalesce(sum(value),0)  OR  sum(coalesce(value),0)

好奇......

2 个答案:

答案 0 :(得分:10)

他们不做同样的事情。如果没有记录,将COALESCE置于内部则无效。将它放在外面会将结果更改为0。使用哪个取决于您想要的结果。

答案 1 :(得分:7)

SQL引擎可能会对此进行优化,但使用

coalesce(sum(value),0) 

可能会快一些,因为可以在不需要处理函数的情况下完成求和,最后coalesce被称为一次

对于每个记录,secone版本会调用coalesce ,如果求和中有0个值,则将值设置为null