您现在的位置是:主页 > 数据库技术 > 数据库技术

MySQL中的聚合函数怎么用

IDCBT2022-01-11服务器技术人已围观

简介本篇内容介绍了“MySQL中的聚合函数怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细

本篇内容介绍了“MySQL中的聚合函数怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

MySQL聚合函数和分页查询

我们在之前了解到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。

1. 聚合函数介绍

什么是聚合函数

聚合函数作用于一组数据,并对一组数据返回一个值。

聚合函数类型

    AVG()

    SUM()

    MAX()

    MIN()

    COUNT()

    聚合函数语法

    聚合函数不能嵌套调用

    比如不能出现类似“AVG(SUM(字段名称))”形式的调用。

    1.1 AVG和SUM函数

    可以对数值型数据使用AVG 和 SUM 函数。

    SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)
    FROM   employees
    WHERE  job_id LIKE '%REP%';

    1.2 MIN和MAX函数

    可以对任意数据类型的数据使用 MIN 和 MAX 函数。

    SELECT MIN(hire_date), MAX(hire_date)
    FROM employees;

    1.3 COUNT函数

      COUNT(*)返回表中记录总数,适用于任意数据类型。

      SELECT COUNT(*)
      FROM   employees
      WHERE  department_id = 50;

        COUNT(expr) 返回expr不为空的记录总数。

        SELECT COUNT(commission_pct)
        FROM   employees
        WHERE  department_id = 50; //忽略了Null值

        计算表中有多少条记录

          方式1:count(*)

          方式2:count(1)

          方式3:count(某具体字段),但是因为忽略了null值,所以不一定对

          问题:用count(*),count(1),count(列名)谁好呢?

          其实,对于MyISAM引擎的表是没有区别的。这种引擎内部有一计数器在维护着行数,但是COUNT(*)的效率略高

          Innodb引擎的表用count(*),count(1)直接读行数,复杂度是O(n),因为innodb真的要去数一遍。但好于具体的count(列名)。

          问题:能不能使用count(列名)替换count(*)?

          不要使用 count(列名)来替代 count(*)count(*)是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。

          说明:count(*)会统计值为 NULL 的行,而

          标签:

          很赞哦! ()

本栏推荐