Oracle 平均数详解avg

1 概述

平均数
排除 null 后,取平均数:avg(列)
包含 null 后,取平均数:avg(coalesce(列, 0))

聚合函数在计算时会排除 null,如:count()、sum()、max()、min()、avg()
但 count(列) 例外

2 示例

with student_info as (
  select 1 sno, 110 score from dual union all
  select 2 sno, null score from dual union all
  select 3 sno, 90 score from dual
)
select avg(si.score), -- (110 + 90) / 2 = 100
       avg(coalesce(si.score, 0)) -- (110 + 90) / 3 = 66.67
  from student_info si;

3 扩展

3.1 聚合函数排除 null

with student_info as (
  select 1 sno, 110 score from dual union all
  select 2 sno, null score from dual union all
  select 3 sno, 90 score from dual
)
select sum(si.score), -- 200
       max(si.score), -- 110
       min(si.score)  -- 90
  from student_info si;

3.2 count(1)、count(*)、count(列) 区别

  • count(1)、count(*):计算所有列的数量(含 空列 null)
  • count(列):计算非空列的数量
with student_info as (
  select 1 sno, 110 score from dual union all
  select 2 sno, null score from dual union all
  select 3 sno, 90 score from dual
)
select count(1), -- 3
       count(*), -- 3
       count(si.score) -- 2
  from student_info si;

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...