Mysql聚合函数返回NULL 【1】聚合函数返回NULL
当where条件不满⾜时,聚合函数sum()、avg()的返回值为NULL。
(1)源数据表
(2)如下SQL语句
SELECT sClass,
COUNT(*) AS total,
colspan 使用
AVG(sChina) AS avg_china,
AVG(sMath) AS avg_math,
AVG(sEnglish) AS avg_english
FROM grades
WHERE sClass ='080601'
(3)实际结果:
温馨提醒:如果不想要这⾏NULL值的结果集,可以参见随笔《》
压力容器铭牌
【2】解决⽅案
accesskey什么意思因为某种需要,我们实在不想出现NULL这个值,想⽤0表⽰,可怎么处理呢?
有三种⽅式:
(1)如下SQL语句
SELECT sClass,
COUNT(*) AS total,
IFNULL(AVG(sMath), 0) AS avg_math,  # ⽅式⼀
mysql菜鸟教程聚合函数
COALESCE(AVG(sEnglish), 0) AS avg_english, # ⽅式⼆
CASE WHEN ISNULL(AVG(sChina)) THEN0ELSE AVG(sChina) END AS avg_china  # ⽅式三
FROM grades
WHERE sClass ='080601';
一份完整的网页代码和效果图
(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)) THEN0ELSE AVG(sChina) END AS avg_china # 保留四位FROM grades
WHERE sClass ='080604'
(2)实际结果
Good Good Study, Day Day Up.this is it歌曲下载
顺序选择循环总结

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。