如何让SQL语句中的聚集函数sum不忽略NULL值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让SQL语句中的聚集函数sum不忽略NULL值相关的知识,希望对你有一定的参考价值。

如何让SQL语句中的sum不忽略NULL值
比如,属性value有1,2,3,NULL
如果我select sum(value) form table显示的是6
而我想按照NULL参与运算结果为NULL的原则,让上条语句的结果也为NULL
我应该怎么做呢?

可以用nvl函数用一个默认值替换null,再用case语句判断sum。
例:假设value列之和不超过1000。
select case when sum(nvl(value,1000))>1000 then null else sum(value) end from table;
参考技术A 加个case when 先判断是否存在NULL值,如果是 直接输出NULL;如果不是,正常计算 参考技术B

不可能的啊,我经常这样用,看下图基础数据

select sum(b) from tb

结果

如果你这有那样的问题,引用一个函数就是,将null值都当0

isnull(A,0) 函数的意思就是如果a是null,那么a就等于0

select sum(isnull(value,0)) form table

参考技术C decode(sum(value),0,null,sum(value)) 参考技术D select sum(case when value is null then null else value end ) from table

聚集函数

5个聚集函数

1.AVG()

返回某列的平均值

只能用于单个列

忽略列值为NULL的行

2.COUNT()

返回某列的行数

COUNT(*)  对表中行的数目进行计数,不管列中包含的是空值还是非空值

COUNT(column)  对特定列中具有值的行进行计数,忽略NULL值 

3.MAX()

返回某列的最大值,忽略NULL

4.MIN()

返回某列的最小值,忽略NULL

5.SUM()

返回某列值的和,忽略NULL

聚集不同值

ALL

默认值,对所有行

DISTINCT

包含不同的值

 

以上是关于如何让SQL语句中的聚集函数sum不忽略NULL值的主要内容,如果未能解决你的问题,请参考以下文章

SQL 使用聚集函数时如何将null的列一起计算

SQL——聚集函数

mysql 分组聚集

mysql 分组聚集

8.聚集函数 ---SQL

SQL语句——08聚集,分组,行转列