【MySQL】聚合函数:AVG、SUM、MIN、MAX、COUNT使用
1.AVG和SUM函数
AVG()
函数取平均值,SUM()
函数取数据总和,可以对数值型数据使用
SELECT
AVG(salary), -- 6461.682243
SUM(salary), -- 691400.00
FROM employees;
2.MIN和MAX函数
MIN()
函数取最小值,MAX()
函数取最大值,可以对任意数据类型使用
SELECT
MIN(hire_date), -- 1987-06-17
MAX(hire_date), -- 2000-04-21
MIN(salary),
MAX(salary)
FROM employees;
3.COUNT函数
COUNT(*)
函数返回表中记录总数,适用于任意数据类型,统计为null值的行
COUNT(expr)
返回expr不为空的记录总数,不会统计为null值的行
SELECT
COUNT(*), -- 50
COUNT(commission_pct) -- 0
FROM employees
WHERE department_id = 50;
问题:count(*)
,count(1)
,count(列名)
哪个好?
- MyISAM引擎:没有区别,内部有计数器在维护行数。
- Innodb引擎:
count(*)
,count(1)
直接读行数,复杂度为O(n),好于具体的count(列名)
count(*)
是SQL92定义的标准统计行数的语法,不要使用count(列名)
来代替count(*)