聚合函数的介绍
聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据。
常用的聚合函数:
- count(col):表示求指定列的总行数
- max(col):表示求指定列的最大值
- min(col):表示求指定列的最小值
- sum(col):表示求指定列的和
- avg(col):表求求指定列的平均值
-- 统计个数count()
select count(height) from stu;
-- 聚合函数,默认不会统计 null 数据
-- 想要统计全部数据可以使用不为空的列来统计(id)
select count(id) from stu;
-- 最小值
select min(age) from stu;
-- 最大值
select max(age) from stu;
-- 求和
select sum(height) from stu;
-- 求平均数
select avg(height) from stu;
-- round(数字,保留几位小数)
select round(avg(height), 2) from stu;
-- ifnull 函数,处理空数据,即遇到null,如何处理
select name, ifnull(height, '保密') from stu;
select name, ifnull(height, 0) from stu;
分组函数
-- 基本格式
select 字段, ....
from 表名
where 条件
group by 字段
having 条件
order by 字段
limit xxx;
-- 1. having 是对分组之后的数据进行筛选
-- 2. 如果使用 group by, select 后面不能使用 * ,只能使用 聚合函数和group by 后出现的字段
-- 修改数据
update stu set gender=1 where id in (1,4);
update stu set gender=3 where id in (2,3);
-- 根据性别分组
select gender from stu group by gender;
-- 显示不同性别的分组中,每组都有哪些人
select gender, group_concat(name) from stu group by gender;
-- 显示不同性别分别有多少人 count()
select gender, count(*) from stu group by gender;
-- 根据gender字段进行分组, 统计分组条数大于2的
select gender, count(*) from stu group by gender having count(*) > 2;
-- 统计汇总聚合函数的信息(很少用 with rollup)
select gender, count(*) from stu group by gender with rollup;
select gender, count(*) from stu group by gender with rollup having gender='男';
-- 对年龄分组之后排序
select age from stu group by age;
select age from stu group by age order by age desc;