加入收藏 | 设为首页 | 会员中心 | 我要投稿 丽水站长网 (https://www.0578zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL中的聚合函数如何用

发布时间:2022-06-17 15:11:59 所属栏目:MySql教程 来源:互联网
导读:MySQL聚合函数和分页查询 我们在之前了解到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。 VG和SUM函数 可以对数值型数据使用AVG 和 SUM 函数。 SELE
  MySQL聚合函数和分页查询
  我们在之前了解到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。
  
   VG和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 的行,而 count(列名)不会统计此列为 NULL 值的行。

(编辑:丽水站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读