zoukankan      html  css  js  c++  java
  • 7.1 计算平均值

    问题:计算某个列的平均值,它可以包含表中的所有行,也可以只包含其中的某个子集。例如,计算所有职员的平均工资以及每个部门的平均工资。

    解决方法:当计算所有职员的平均工资时,只需要把AVG函数应用于工资列即可。
    select avg(sal) as avg_sal from emp group by deptno;

    要计算每个部门的平均工资,需使用GROUP BY子句,它按每个部门创建分组:
    select deptno,avg(sal) as avg_sal from emp group by deptno;

    讨论:
    如果以整个表作为一个组或一个窗口计算平均值,则只需对相应列使用AVG函数,而不要使用GROUP BY子句。请注意,AVG函数会忽略NULL值。

    create table t2(sal integer);
    insert into t2 values(10);
    insert into t2 values(20);
    insert into t2 values(null);

    select distinct 30/2 from t2;
    +---------+
    | 30/2    |
    +---------+
    | 15.0000 |
    +---------+

     select avg(coalesce(sal,0)) from t2;
    +----------------------+
    | avg(coalesce(sal,0)) |
    +----------------------+
    |              10.0000 |
    +----------------------+

    COALESCE函数会返回参数列表中的第一个非NULL值。如果把SAL值中的NULL转换为0,平均值就会改变。
    顺便提一下,GROUP BY依据的列不一定要包含在SELECT列表中,例如:
    select avg(sal) from emp group by deptno;
    +--------------------+
    | avg(sal)           |
    +--------------------+
    | 2916.6666666666665 |
    | 1566.6666666666667 |
    +--------------------+

    即使在SELECT子句中不包含DEPTNO,也可以按它分组。

  • 相关阅读:
    ExcelHelper
    c# 文件的读写
    Wav文件操作类
    c# & (与) 、^ (异或)和 >>(<<位移运算)
    c# 高精度的timer
    c# 生成txt文件,写入内容
    C# 对 list<T>中的数据按某字段的大小进行排序
    OC 底层探索 06、 isa 2个经典问题分析
    OC 底层探索 05、属性、成员、实例变量简析
    数据结构与算法 0、 汇总简介
  • 原文地址:https://www.cnblogs.com/liang545621/p/7523230.html
Copyright © 2011-2022 走看看