聚合函数作用于一组数据,并对一组数据返回一个值。MySQL中常用的聚合函数有,
AVG()
SUM()
MAX()
MIN()
COUNT()
AVG()和SUM()
SELECT AVG(salary),SUM(salary),SUM(salary)/107
FROM employees;-- 返回6461.682243 691400.00 6461.682243
MAX()和MIN()
SELECT MAX(salary),MIN(salary)
FROM employees; -- 返回24000.00 2100.00
COUNT()
COUNT()
,计算指定字段在查询结构中出现的次数。
SELECT COUNT(employee_id),COUNT(salary),COUNT(2*salary),COUNT(1),COUNT(2),COUNT(*)
FROM employees; -- 返回107 107 107 107 107 107
查询数据表中有多少行记录,可以使用以下任意方式:
COUNT(*)
,如SELECT COUNT(*) FROM employees;
COUNT(1)
,如SELECT COUNT(1) FROM employees;
COUNT(具体字段)
,如SELECT COUNT(employee_id) FROM employees;
注意,如果字段值为空,则不会被计算在内。
以上三种方式的执行效率也存储引擎有关。
如果使用的存储引擎是MyISAM,则三者执行效率相同。
如果使用的存储引擎是InnoDB,则三者执行效率不同,COUNT(*)
=COUNT(1)
>COUNT(具体字段)
# 使用COUNT()计算指定字段出现的次数时,是不计算空值的。
SELECT COUNT(commission_pct)
FROM employees; -- 返回35
SELECT commission_pct
FROM employees
WHERE commission_pct IS NOT NULL; -- 返回35行记录
# AVG = SUM / COUNT
SELECT AVG(salary),SUM(salary)/COUNT(salary)
FROM employees; -- 返回 6461.682243 6461.682243
SELECT AVG(commission_pct),SUM(commission_pct)/COUNT(commission_pct),SUM(commission_pct)/COUNT(*)
FROM employees; -- 返回 0.222857 0.222857 0.072897