wap网站设计方案,南宁网络公司有哪些,哪个做简历的网站比较好,网站建设与管理 教学视频一、聚合函数介绍 实际上 SQL 函数还有一类#xff0c;叫做聚合#xff08;或聚集、分组#xff09;函数#xff0c;它是对一组数据进行汇总的函数#xff0c;输入的是一组数据的集合#xff0c;输出的是单个值。#xff08;可以是一个字段的数据#xff0c;也可以是通…一、聚合函数介绍 实际上 SQL 函数还有一类叫做聚合或聚集、分组函数它是对一组数据进行汇总的函数输入的是一组数据的集合输出的是单个值。可以是一个字段的数据也可以是通过分组后每一组的数据。
1.1 常见的聚合函数
函数解释AVG()求一组数据的平均值。不计算null值只适用于数值SUM()求一组数据的总和。不计算null值只适用于数值MAX()求一组数据中的最大值。不计算null值适用于数值、字符串、日期时间等任意数据类型MIN()求一组数据的最小值。不计算null值适用于数值、字符串、日期时间等任意数据类型COUNT()求一组数据的个数。不计算null值适用于数值、字符串、日期时间等任意数据类型
1.2 聚合函数的语法 注聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。
1.3 AVG和SUM函数
只适用于对数值型数据使用AVG 和 SUM 函数。 1.4 MIN和MAX函数
可以对任意数据类型的数据使用 MIN 和 MAX 函数。 1.5 COUNT函数
COUNT(*)返回表中记录总数或指定字段在查询结果中出现的次数适用于任意数据类型。
COUNT(expr) 返回expr不为空null值不计算在内的记录总数。因为不计算空值所以expr是字段名时得出的记录总数并不是正确的记录总数。
综上一共有三种计算记录总数的方式。count(字段)、count(*)、count(1)。其中推荐使用count(*)和count(1)两种方式其中1表示“并不指明哪一个字段”相当于拿1来表示每一条记录当然使用2等任意字符都可以。 问题用count(*)count(1)count(列名)谁好呢? 其实对于MyISAM引擎的表是没有区别的这种引擎内部有一计数器在维护着行数三者效率相同都是O(1)并且结果也相同。 Innodb引擎的表用count(*)count(1)直接读行数复杂度是O(n)因为innodb真的要去数一遍但好于具体的count(列名)故效率count(*) count(1) count(列名)。
问题能不能使用count(列名)替换count(*)? 不要使用 count(列名)来替代 count(*) count(*) 是 SQL92 定义的标准统计行数的语法跟数据库无关跟 NULL 和非 NULL 无关。 说明count(*)会统计值为 NULL 的行而 count(列名)不会统计此列为 NULL 值的行。 AVG SUM / COUNT 永远成立因为AVG和SUM也不计算空值。