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 值的行。 (编辑:丽水站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |