DQL 语言 --分组函数 07
一、分组函数
1、分类
max 最大值
min 最小值
sum 和
avg 平均值
count 计算个数
max 最大值
min 最小值
sum 和
avg 平均值
count 计算个数
2、特点
①语法
select max(字段) from 表名;
select max(字段) from 表名;
②支持的类型
sum和avg一般用于处理数值型
max、min、count可以处理任何数据类型
sum和avg一般用于处理数值型
max、min、count可以处理任何数据类型
③以上分组函数都忽略null
④都可以搭配distinct使用,实现去重的统计
select sum(distinct 字段) from 表;
⑤count函数
count(字段):统计该字段非空值的个数
count(*):统计结果集的行数
④都可以搭配distinct使用,实现去重的统计
select sum(distinct 字段) from 表;
⑤count函数
count(字段):统计该字段非空值的个数
count(*):统计结果集的行数
案例:查询每个部门的员工个数
1 xx 10
2 dd 20
3 mm 20
4 aa 40
5 hh 40
1 xx 10
2 dd 20
3 mm 20
4 aa 40
5 hh 40
count(1):统计结果集的行数
效率上:
MyISAM存储引擎,count(*)最高
InnoDB存储引擎,count(*)和count(1)效率>count(字段)
MyISAM存储引擎,count(*)最高
InnoDB存储引擎,count(*)和count(1)效率>count(字段)
⑥ 和分组函数一同查询的字段,要求是group by后出现的字段
#1、常用函数 的使用
SELECT SUM(salary) 和,ROUND(AVG(salary),2) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数 FROM employees;
#2、参数支持哪些类型
SELECT SUM(last_name) ,AVG(last_name) FROM employees; #不支持
SELECT SUM(hiredate) ,AVG(hiredate) FROM employees; #不支持
SELECT MAX(last_name),MIN(last_name) FROM employees; #支持
SELECT MAX(hiredate),MIN(hiredate) FROM employees; #支持
SELECT COUNT(commission_pct) FROM employees; #支持
SELECT COUNT(last_name) FROM employees; #支持
#3、是否忽略null
SELECT SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees; #忽略
SELECT MAX(commission_pct) ,MIN(commission_pct) FROM employees; #忽略
SELECT COUNT(commission_pct) FROM employees; #忽略
#4、和distinct搭配
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees;
#5、count函数的详细介绍
SELECT COUNT(*) FROM employees; #统计行数
SELECT COUNT(1) FROM employees; #加常量值 等价于 统计行数
#6、和分组函数一同查询的字段有限制
SELECT AVG(salary),employee_id FROM employees; #后面字段显示不完
测试:查询员工表中最大入职时间和最小入职时间的相差天数(DIFFRENCE)
SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) DIFFRENCE FROM employees;