sql的null对求和的影响

结论:总体来说,有null值时对数据求和一般无影响。

  • 如果在某个分组内既有null值,又有非null值时,求和时会自动把null当作0处理;
  • 如果在某个分组内全是null值,求和时这个分组不会消失,且最后结果仍是null;
  • 横向相加会有影响;

下面是自己上传了一些简单的测试数据,验证以上结论: 

测试1: 对单个表

比如原始数据为data_test:

idcnt
12
2null
27
33
45

对id分组求和:

select
    id,
    sum(cnt)
from
    data_test
group by
    id;
id_c1
33
27
12
45

整列数据求和: 

select
    sum(cnt)
from
    data_test

结果为17。

综上可见,在单个表有null值时,null对求和没有产生影响;


测试2:对多表连接

表1:id_test 

idcnt
12
27
33
45

表2:id_value_test 

idcnt
12
27
33
45

两张表左连接后的结果:

select
    t1.*,
    t2.cnt
from
    id_test t1
    left join id_value_test t2 on t1.id = t2.id;
idcnt
27
33
12
5null
45

 两张表左连接后再对id分组求和后的结果:

select
    t1.id,
    sum(t1.cnt)
from
    (
        select
            t1.*,
            t2.cnt
        from
            wjda_dev.id_test t1
            left join wjda_dev.value_data_test t2 on t1.id = t2.id
    ) t1
group by
    t1.id;
id_c1
45
5null
12
27
33

分组没有消失,且id为5的分组求和结果仍为null 。


横向相加会有影响:

select
    *,
    c1 + c2,
    nvl(cast(c1 as bigint),0) + nvl(cast(c2 as bigint),0)
from
   test_null;
c1c2_c1_c2
1nullnull1
1122
2466
2nullnull2
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值