首页 > 数据库 > MySQL > 正文

MySQL中的聚合函数如何用

2024-07-24 12:33:51
字体:
来源:转载
供稿:网友
  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 值的行。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表