`
famoushz
  • 浏览: 2962642 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL中sum(),avg()等统计结果为null的解决方法

SQL 
阅读更多
Tags:SQL SUM() NULL

在SQL语句中使用集合函数count(),返回结果肯定为非负整数,这也是用来判断数据有无的一个很有效的方法;

然后在用sum()进行集合相加的时候,如果sum()的对象没有记录,那么不会返回0,而返回null,这么做,不会影响数据库,因为数值型字段也是可以存放NULL的,因为在执行这样的SQL语句的时候,没有记录也不会报错。

但是执行完之后,要使用这个数据就有问题了。

1、在程序里处理的时候,比如进行四则运算或其他的强类型转换的时候,就会提供类型不正确或是与其它数据相加得到的结果变成NULL,因为NULL+number= Null。

2、统计的结果的SQL语句中有其它的运算,同1的最后一种情况,Null+ number = Null。就会把其它的有效数据也抹杀掉了。

解决方法:

1、使用isnull()方法进行判断,如isnull(sum(cnt),0),其中0为默认值,如果sum(cnt)的结果为null,则赋值 0;同理此方法可用于某字段,isnull(cnt,0),这样就可以排除一些值为null的数值型字段了。而如果这样 isnull(sum(isnull(cnt,0)),0),这样就可保万无一失了。

2、使用case when else流程控制语句,如可以用"case when sum(cnt) is null then 0 else sum(cnt) end"来代替sum(cnt),其中0同上一条的意义相同。

另外求平均函数avg() 也是一样的情况,相同的解决办法。

分享到:
评论

相关推荐

    SQL 语法 SQL 总结 SQL教程

    SQL avg() SQL count() SQL first() SQL last() SQL max() SQL min() SQL sum() SQL Group By SQL Having SQL ucase() SQL lcase() SQL mid() SQL len() SQL round() SQL now() SQL format() SQL ...

    sql中的按日期统计问题

    通过以上方法,我们可以有效地解决SQL中的按日期统计问题。在实际应用中,应结合具体数据库系统的特点和需求,灵活运用这些技术。如果你有具体的SQL脚本(如`按日期统计sql.sql`),分析和理解它将进一步深化对这一...

    SQL之分组统计和子查询专题

    常用的聚合函数有COUNT、SUM、AVG、MAX、MIN等。其中,COUNT函数的返回值如果没有数据,将返回0,而其他聚合函数可能返回NULL。 在进行分组统计时,需要注意以下几点: * 分组之中的不成文规定之一:当数据重复的...

    sqlserver数据统计一

    在SQL Server中,我们可以使用Transact-SQL(T-SQL)编写源代码来执行数据统计任务,例如使用GROUP BY语句进行分组统计,使用COUNT、SUM、AVG、MAX、MIN等聚合函数对数据进行计算。此外,可能还会提及SQL Server ...

    oracle经典sql多表查询,sql统计

    以上只是Oracle SQL多表查询和统计功能的一部分,实际使用中还有更多的复杂查询和统计技巧,例如子查询、窗口函数、集合操作等。通过持续学习和实践,你可以掌握这些技能,提高在Oracle数据库中的数据处理能力。

    SQL复习之聚集函数

    在SQL语言中,聚集函数是用于处理一组值并返回单个值的函数。它们在数据分析和数据查询中扮演着至关重要的角色,可以帮助我们快速获取数据集的统计信息。本篇文章将深入探讨SQL中的聚集函数,以及如何利用它们来增强...

    SQL计算某只股票5日移动平均价和5日交易量加权移动平均价(附SQL语句)

    对于分析师和技术交易者而言,这种统计方法可以帮助他们理解股票价格的趋势和发展方向。本文将详细介绍如何通过 SQL 语言来实现对某只股票5日移动平均价和5日交易量加权移动平均价的计算。 #### 一、背景介绍 在...

    oracle中对null值的处理

    在SQL中,NULL被视为一种特殊状态,无法进行比较、算术运算和逻辑操作。 2. NULL与非NULL比较: Oracle不支持NULL与任何值(包括另一个NULL)的直接比较。`NULL = NULL` 返回的结果是未知(而不是TRUE),因为NULL...

    精通SQL——结构化查询语言详解

    【SQL结构化查询语言详解】 SQL(Structured Query Language)是一种用于管理和处理关系...通过熟练掌握SUM、MAX、MIN、AVG和COUNT等函数,以及它们在实际查询中的应用,我们可以更高效地探索和解释数据库中的数据。

    oracle中的null_考试题目

    - 第2题中,由于`where 1=2`条件不成立,所以查询结果集中没有行,`SUM`结果为`NULL`。 - **选项分析**: - A. `NULL`: 正确,因为查询结果为空。 - B. `0`: 错误,`SUM`函数对于空集合返回`NULL`而不是`0`。 - ...

    SQL中GROUP BY的用法

    SQL 中 GROUP BY 的用法及聚合函数 GROUP BY 是 SQL 中的一种分组查询语句,通常与聚合函数配合使用。GROUP BY 语句根据一个或多个列将查询结果分组,并对每组计算聚合函数的值。 在使用 GROUP BY 语句时,需要...

    SQL Server2005基本方法和语句

    本文将深入解析 SQL Server 2005 的基本方法与常用语句,包括数据库的创建与删除、表的创建与修改、数据的插入与删除等关键操作,旨在为数据库管理员和开发者提供全面的指导。 #### 1. 创建数据库 创建数据库是...

    浅谈SQL Server中Select语句的分组统计功能.pdf

    Group by子句是Select语句中实现分组统计的重要组件,它能够根据一个或多个列的值将数据行进行分组,并且配合聚合函数,如COUNT(), SUM(), AVG(), MIN(), MAX()等,可以对每个分组进行统计汇总操作。 首先,分组...

    SQL 合计函数.rar

    在SQL(Structured Query Language)中,合计函数是用于对数据集进行数学运算并返回单一值的函数。这些函数广泛应用于数据分析、报表制作以及数据库查询,帮助我们快速获取表中的汇总信息。本资料“SQL 合计函数.rar...

    SQL语句(增、删、改、查)及相关问题

    SQL(Structured Query Language)是一种用于管理关系数据库的标准语言,广泛应用于数据查询、更新和管理等方面。本文将详细介绍SQL中的基本操作:插入(Insert)、删除(Delete)、更新(Update)和查询(Select)...

    轻松掌握sql第四版

    读者将学习到SELECT语句的基本用法,如选择特定列、从多个表中联接数据、使用WHERE子句过滤结果、使用GROUP BY和HAVING进行分组统计,以及ORDER BY用于排序结果。此外,还深入探讨了更复杂的查询技术,如子查询、...

    SQL Server 2005中的SQL简单查询

    1. **掌握SQL Server 2005中附加数据库的方法:** 在SQL Server 2005中,附加数据库是一项基本操作,允许用户将现有的数据库文件(.mdf)连接到SQL Server实例中,从而可以对数据库进行查询和管理。 2. **熟练使用SQL...

    presto sql 与mysql sql 对比.pdf

    Presto SQL 和 MySQL SQL 都支持聚合函数,如 `count()`、`sum()`、`avg()` 等。Presto SQL 还支持 `date_diff()` 函数来计算两个日期之间的差异。 排序 Presto SQL 和 MySQL SQL 都支持排序函数,如 `order by`、...

    ORACLE中的经典SQL及函数

    如果某个员工的奖金为NULL,直接相加会导致错误的结果。此时,可以使用`NVL`函数来避免这个问题,如`salary = (salary + NVL(bonus, 0)) * 1.1`,这样即使奖金为NULL,也会将其视为0进行计算。 接下来,我们讨论...

    《Pro Oracle SQL》--Chapter 5--5.5 Questions about Data

    7. **聚合函数与NULL**:SUM、AVG等聚合函数在计算时会忽略NULL值,COUNT(*)会统计所有行,而COUNT(column)仅统计column非NULL的行。 8. **NULL联合**:在UNION、UNION ALL等操作中,NULL值的处理方式不同。UNION会...

Global site tag (gtag.js) - Google Analytics