版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40667484/article/details/85017254
上一章:第五章:数据库范围查询和排序
聚合函数(count,max,min,sum,avg)
聚合函数的作用:计算总数,最大值,最小值,总和,平均值
总数(count函数)
代码:
select count(*) as 男性个数 from students where gender=1;//gender=1条件
select count(*) as 女性个数 from students where gender=2;//gender=2条件
select count(*) as 中性个数 from students where gender=3;//gender=3条件
select count(*) as 保密个数 from students where gender=4;//gender=4条件
如图:以男性个数为例
最大值(max函数)
代码:
select max(age) from students;
代码成果
最小值(min函数)
代码:
select min(age) from students;
求和(sum)
代码:
select sum(age) from students;
如图:
– 平均值(avg)
代码:
select avg(age) from students;
如图:
重合使用多个函数
计算平均id值
代码:
select sum(id)/count(*) as 平均id值 from students;
如图:
四舍五入 round(123.23,1) 保留一位小数 不能用在银行哈
代码:
select round(sum(id)/count(*),3) as 平均id值 from students;
如图:
总结
select后面可以放字段,表达式(加减乘除),特殊字符(*)
分组
分组和聚合函数一起用,不然没啥作用
group by 字段
与distinct(去重)有区别
group by把相同的归为一类,输出是多个
distinct把相同的去掉到只剩一个,输出一个
先分组再在组内使用数据
代码:
select gender from students group by gender;
如图:
统计组内数据每个小组的最大年龄 这里小分组是指男,女,中性,保密四个小组
代码:
select gender,max(age) from students group by gender;
如图:
统计组内数据每个小组的总数
代码:
select gender,count(*) from students group by gender;
如图:
统计组内数据所有的名字(group_concat()函数)
concat()内可以写任何字符串 都会输出,用来统计组内所有数据
代码:
select gender,group_concat(name) from students group by gender;
如图:
统计组内男性个数
代码:
select gender,count(*) from students where gender=1 group by gender;
如图:
统计组内男性名字,年龄,id
代码:
select gender,group_concat(name,"_",age," ",id) from students where gender=1 group by gender;
如图:
写什么有什么前提是字符串
having方法
having是对分组进行条件判断而不是对结果
达到过滤数据的作用,查找想要的数据的作用
与where有区别
having是对组的结果进行操作,在group后面
where是对原表进行操作,在group前面
查询平均年龄超过并等于20随的性别和姓名
代码:
select gender,group_concat("名字是",name," ""年龄是",age,"\n") from students group by gender having avg(age)>=20;//注意用了having
如图:
查询每种性别中的人数多于2个的信息
代码:
select gender,count(*) as 人数 from students group by gender having count(*)>2;
如图: