【1】聚合函数返回NULL

当where条件不满足时,聚合函数sum()、avg()的返回值为NULL。

(1)源数据表

(2)如下SQL语句

SELECT sClass,
COUNT(*) AS total,
AVG(sChina) AS avg_china,
AVG(sMath) AS avg_math,
AVG(sEnglish) AS avg_english
FROM grades
WHERE sClass = ''

(3)实际结果:

温馨提醒:如果不想要这行NULL值的结果集,可以参见随笔《Mysql AVG() 值返回NULL而非空结果集

【2】解决方案

因为某种需要,我们实在不想出现NULL这个值,想用0表示,可怎么处理呢?

有三种方式:

(1)如下SQL语句

SELECT sClass,
COUNT(*) AS total,
IFNULL(AVG(sMath), 0) AS avg_math, # 方式一
COALESCE(AVG(sEnglish), 0) AS avg_english, # 方式二
CASE WHEN ISNULL(AVG(sChina)) THEN 0 ELSE AVG(sChina) END AS avg_china # 方式三
FROM grades
WHERE sClass = '';

(2)实际结果

【3】小数位数

如上结果,比较介怀,为什么avg函数的后面那么多小数位数,想要保留若干位数,又怎么处理呢?

使用ROUND进行四合五入:

(1)如下SQL语句

SELECT sClass,
COUNT(*) AS total,
ROUND(IFNULL(AVG(sMath), 0), 1) AS avg_math, # 保留一位
ROUND(COALESCE(AVG(sEnglish), 0), 2) AS avg_english, # 保留两位
CASE WHEN ISNULL(AVG(sChina)) THEN 0 ELSE AVG(sChina) END AS avg_china # 保留四位
FROM grades
WHERE sClass = ''

(2)实际结果

Good Good Study, Day Day Up.
顺序 选择 循环 总结

Mysql 聚合函数返回NULL的更多相关文章

  1. MySQL聚合函数、控制流程函数(含navicat软件的介绍)

    MySQL聚合函数.控制流程函数(含navicat软件的介绍) 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据 ...

  2. 第08章 MySQL聚合函数

    第08章 MySQL聚合函数 我们上一章讲到了 SQL 单行函数.实际上 SQL 函数还有一类,叫做聚合(或聚集.分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值. 1 ...

  3. TSQL 聚合函数忽略NULL值

    max,min,sum,avg聚合函数会忽略null值,但不代表聚合函数不返回null值,如果表为空表,或聚合列都是null,则返回null.count 聚合函数忽略null值,如果聚合列都是null ...

  4. WORD 的 Open 和Workbook 的 LoadFromFile 函数返回null的一种解决方法

    WORD Application.Documents.Open 和 Workbook workbookExcel.LoadFromFile 函数返回null的一种解决方法 DCOM Config Se ...

  5. SQL中AVG、COUNT、SUM、MAX等聚合函数对NULL值的处理

    一.AVG() 求平均值注意AVE()忽略NULL值,而不是将其作为“0”参与计算 二.COUNT() 两种用法 1.COUNT(*) 对表中行数进行计数不管是否有NULL 2.COUNT(字段名) ...

  6. Mysql聚合函数count(1) sum(1)结果返回0和NULL

    1.count(1) 返回为0 如果所查询的表或者where条件筛选后得到的结果集为空,则 count(1)返回为 0 如: select count(id) from test; select co ...

  7. Mysql中使用聚合函数对null值的处理

    平时因为对于数据库研习的不深,所以在面试的时候问了一些平常遇到过的问题居然没法很肯定地回答出来,实在让自己很恼怒! 这次让我记忆深刻的一个问题是: 在mysql中使用聚合函数的时候比如avg(t),t ...

  8. 有关Mysql的mysql_store_result函数返回NULL的情况以及其他注意事项

    成功调用mysql_query()后,mysql_store_result()能够返回NULL.出现该情况时,表明出现了下述条件之一: ·         出现了malloc()故障(例如,如果结果集 ...

  9. MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. 新浪云SAE 关于部分函数不能使用的做法

    例如:file_put_contents("test.txt","Hello World. Testing!"); 可以这样写: file_put_conten ...

  2. Jmeter学习系列----2 录制脚本

    虽然专业的自动化测试人员都不会选择录制脚本的方式来进行自动化脚本的编写,但是,我们作为初学者还是可以学习一下怎么利用工具来进行脚本的录制,体验一下自动化工具的效率,下面,具体讲下如何使用jmeter自 ...

  3. 在docker中安装mysql

    #!/bin/sh # 安装docker # 在docker中安装mysql # 解决了docker容器中无法输入中文的问题 ##########################安装docker # ...

  4. [LeetCode] Letter Case Permutation 字母大小写全排列

    Given a string S, we can transform every letter individually to be lowercase or uppercase to create ...

  5. [Codeforces Round #438][Codeforces 868D. Huge Strings]

    题目链接:868D - Huge Strings 题目大意:有\(n\)个字符串,\(m\)次操作,每次操作把两个字符串拼在一起,并询问这个新串的价值.定义一个新串的价值\(k\)为:最大的\(k\) ...

  6. Web版记账本开发记录(二)开发过程遇到的问题小结1 对数据库的区间查询

    问题1 对数据库的区间查询 如功能显示,想要按照年份和月份查询相应的记录,就要使用区间查询 对应的代码如下 servlet层的ChaXun java.sql.Date sDate = new java ...

  7. nginx r日志中午出现\xE5\x88\x98\xE4\xB8\x96\xE5\xA5\x87

    参考文档: https://www.cnblogs.com/hark0623/p/5715726.html https://www.cnblogs.com/fqfanqi/p/7900758.html ...

  8. 聚焦AI实践,2019 A2M峰会将在上海举行!

    18年,BERT重磅发布,刷新了很多NLP的任务的最好性能:KENSHO等智能化应用的成功应用,让知识图谱在证券行业的建设思路和应用实践成为业内较为关注的问题:强化学习也在与人类的对战游戏中独领风骚: ...

  9. django上传excel文件

    def uploadGrade(request): ''' 班级信息导入 :param request: :return: ''' if request.method == 'POST': f = r ...

  10. python learning day01

    python简介 一.python的由来: python的创始人是吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...