分组函数
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum 求和 ,
avg 平均值 ,
max 最大值 ,
min 最小值 ,
count 计算个数
特点:
- sum , avg 用于处理数值型
max , min , count 可以处理任何类型 - 分组函数都忽略null值
- 可以和 DISTINCT 搭配使用实现去重运算
- 一般用 count(*) 统计总行数
- 和分组函数一起查询的字段要求是 group by 后的字段
e.g.:简单使用
SELECT SUM(salary) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT MIN(salary) FROM employees;
SELECT COUNT(salary) FROM employees;
SELECT
SUM( salary ) 和,
AVG( salary ) 平均,
MAX( salary ) 最大,
MIN( salary ) 最小,
COUNT( salary ) 个数
FROM
employees;
e.g.: 参数支持哪些类型
SELECT SUM(last_name) , AVG(last_name) FROM employees; #值为0,无意义;
e.g.: 是否忽略null
SELECT
SUM( commission_pct ) 和,
AVG( commission_pct ) 平均,
SUM( commission_pct ) / 35 平均1,
SUM( commission_pct ) / 107 平均2,
MAX( commission_pct ) 最大,
MIN( commission_pct ) 最小,
COUNT( commission_pct ) 个数
FROM
employees;
e.g.: 和 DISTINCT 搭配
SELECT
SUM( DISTINCT salary ),
SUM( salary ),
COUNT( DISTINCT salary ),
COUNT( salary )
FROM
employees;
e.g.: count 函数详解
SELECT COUNT(*) FROM employees; # 统计表中总行数
SELECT COUNT(1) FROM employees; # 传任意常量为参数也是统计表中总行数
效率比较:
MYISAM 存储引擎下,COUNT() 的效率高
INNOBD存储引擎下,COUNT() 和 COUNT(1) 的效率差不多,但都比COUNT(字段)要高
e.g.: 和分组查询一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees;