微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;

原文地址:https://www.jb51.cc/wenti/3285639.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐