• MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)


    1.首先我们需要了解下什么是聚合函数

      聚合函数aggregation function又称为组函数。 认情况下 聚合函数会对当前所在表当做一个组进行统计。

    2.聚合函数的特点

      1.每个组函数接收一个参数(字段名或者表达式) 统计结果中默认忽略字段为NULL的记录

      2.要想列值为NULL的行也参与组函数的计算,必须使用IFNULL函数对NULL值做转换。

      3.不允许出现嵌套 比如sum(max(xx))

    3.聚合函数 count(),求数据表的行数

    1
    select count(*/字段名) from 数据表

    4.聚合函数 max(),求某列的最大数值

    1
    select max(字段名)from 数据表

      

    5.聚合函数min(),求某列的最小值

    1
    select main(字段名) from 数据表

      

    6.聚合函数sum(),对数据表的某列进行求和操作

    1
    select sum(字段名) from 数据表

      

     7.聚合函数avg(),对数据表的某列进行求平均值操作

    1
    select avg(字段名) from 数据表

      

    8.聚合函数和分组一起使用

    1
    select count(*),group_concat(age) from students group by age;

      

      总结:

      MySQL的聚合函数和我们日常office表使用的一些对表的操作的方法大致相同,在工作中主要配合分组使用

    =====================================================

    一、聚合函数(aggregation function)---也就是组函数

      在一个行的集合(一组行)上进行操作,对每个组给一个结果。

    常用的组函数:

    AVG([distinct] expr)

    求平均值

    COUNT({*|[distinct] } expr)

    统计行的数量

    MAX([distinct] expr)

    求最大值

    MIN([distinct] expr)

    求最小值

    SUM([distinct] expr)

    求累加和

      ①每个组函数接收一个参数

      ②默认情况下,组函数忽略列值为null的行,不参与计算

      ③有时,会使用关键字distinct剔除字段值重复的条数

    注意:

      1)当使用组函数的select语句中没有group by子句时,中间结果集中的所有行自动形成一组,然后计算组函数;

      2)组函数不允许嵌套,例如:count(max(…));

      3)组函数的参数可以是列或是函数表达式;

      4)一个SELECT子句中可出现多个聚集函数。

     

     

     table test

    Field Type Null Key Default Extra
    id int(11) NO PRI NULL auto_increment
    name char(50) NO   NULL  
    age int(11) NO   NULL  
    school char(50) YES   NULL

    (一)AVG()函数

    AVG()通过对表中行数计数并计算特定列值之和,从而求得该列的平均值。

    例如:SELECT  AVG(age)  AS  avg_age  FROM test;

    此语句返回表test中所有age的平均值。

    例如:SELECT AVG(age) AS  avg_age FROM  test WHERE name="john";

    此语句返回表test中name=john的age的平均值。

    注:AVG只能确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个avg函数。而且avg函数会忽略列值为NULL的行。

    (二)COUNT()函数

    COUNT()函数进行计数。可利用COUNT()函数确定表中行的数目或者符合特定条件的行的数目。

    COUNT()有两种使用方式:

    1.使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。

    2.使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

    例如 SELECT COUNT(*)  AS num_test  FROM test;

    此语句对表test所有行进行计数,返回表的总行数,不管行中各列有什么值。

    例如 SELECT COUNT(school) FROM test;

    此语句只对school列中有值的行进行计数,忽略null行。

    (三)MAX()函数

    MAX()函数返回指定列中的最大值。MAX()要求指定列名。

    例如SELECT MAX(age) FROM test;

    此语句返回表test中age的最大值。

    注:MAX()函数忽略值为NULL的行。

    (四)MIN()函数

    MIN()函数返回指定列的最小值,MIN()要求指定列名。

    例如 SELEC  MIN(age)  FROM test;

    此语句返回最小的age值。

    注:MIN()函数忽略列值为NULL的行。

    (五)SUM()函数

    SUM()函数来返回指定列值的和(总计)。

    SELECT  SUM(age)FROM test;

    此语句返回age列所有值之和。

    注:SUM函数忽略列值为NULL的行。SUM也可以用来合计计算值,SUM(price*count)。

    (六)聚集不同值

    对以上5个聚集函数都可以如下使用:

    1.对所有行执行计算,指定ALL参数或者不给参数(ALL参数是默认的)

    2.只包含不同的值,指定DISTINCT参数

    例如SELECT  AVG(DISTINCT age) FROM test;

    此语句返回age值不同的所有age值的平均值。

    注:DISTINCT只能用在列名前面,不能用在表达式前。

  • 相关阅读:
    oracle 11g jdbc jar包在哪个文件目录
    Java生成验证码
    Oracle 安装“权限不够”
    Linux新建文件、文件夹
    基于Java web技术文件上传和下载功能开发实战练习视频(fileupload)
    springmvc的xml文件位置
    oracle 11g的OEM(企业管理器),https://主机ip:1158/em/console网页无法显示
    常见的开源协议分析
    约瑟夫问题猴子选大王
    TOJ1036.Rails STL栈
  • 原文地址:https://www.cnblogs.com/panchanggui/p/10652334.html
Copyright © 2020-2023  润新知