sql问题在写sum语句的时候关于nvl函数
3个回答
展开全部
最好是: nvl(sum(aa),0)
因为 sum 本身会忽略 null的值,所以sum本身,不会出现 1行有数、另一行为null 而返回null 的情况。
但是由于 where 条件导致没有任何一条数据符合的情况, 此时 sum 会返回 null
所以 在最外层判断, 是合适的。
因为 sum 本身会忽略 null的值,所以sum本身,不会出现 1行有数、另一行为null 而返回null 的情况。
但是由于 where 条件导致没有任何一条数据符合的情况, 此时 sum 会返回 null
所以 在最外层判断, 是合适的。
追问
那如果是sum(nvl(aa,0))这样根本不可能返回null值啊,因为每一个都不能是null。感谢您的回答,还有就是这两个性能会不会有很大的不同呢?
追答
如果没有满足条件的数据,
sum(nvl(aa,0))
返回的是null
效率的关键不再这儿,在于where的条件是否能使用索引
展开全部
按常理是先判断AA字段是否为空,如果是空就是0
所以应该是sum(nvl(aa,0))
前面那个这样写也是正确的,但是没什么意义
先加总所有的,如果全都是空就是0
所以应该是sum(nvl(aa,0))
前面那个这样写也是正确的,但是没什么意义
先加总所有的,如果全都是空就是0
追问
感谢您的回答,还有就是这两个性能会不会有很大的不同呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该写nvl(sum(aa),0)
即没有符合条件的资料时显示0,sum()不会统计null值的资料
即没有符合条件的资料时显示0,sum()不会统计null值的资料
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询