#分组函数
#用作统计使用,又称为聚合函数或组函数
/*
sum:
avg
max
min
count:
*/
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;
# 使用特点
#参数类型支持哪些类型:
#sum avg : 数值型
#max min : 任何类型
#count :非空值个数
#是否忽略null值:
# sum null值不参与运算
# avg 忽略null值
# max min
# count 忽略
# 可以和distinct 搭配
SELECT SUM(DISTINCT salary), SUM(salary) FROM employees;
SELECT COUNT(DISTINCT salary), COUNT(salary) FROM employees;
#count 的详细介绍
SELECT COUNT(salary) FROM employees;
# 任何非空列都包括
# 常用来统计包含多少行
SELECT COUNT(*) FROM employees; //只要每列的值不全为空,都计算在内
SELECT COUNT(1) FROM employees; //相当于添加一列,每列值为1,统计1的个数
#效率
MYISAM存储引擎下,COUNT(*)的效率高
INNODB存储引擎下,COUNT(*)和COUNT(1)的效率差不多,比COUNT(字段)要高一些
COUNT(字段)需要判断字段的值是否为null,为null不计算在内,涉及到筛选操作
#和分组函数一同查询的字段要求是group by 后的字段
SELECT AVG(salary),employee_id FROM employees;
此处employee_id没有意义
# 查询最大入职天数和最小入职天数的相差天数
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) FROM employees;
# 查询部门为90的员工个数
SELECT COUNT(*) FROM employees
WHERE department_id=90;
网友评论