分组查询:包括单列分组查询和多列分组查询。
group by
单列分组查询 示例:
1.根据科目分组,查询每个科目的平均分
2.根据班级分组,查询每个班级成绩总数
3.根据班级分组,查询每个班级的最低分
select subjectID,avg(exam) as 平均分 form exam group by subjectID;
select Classid,count(*) as 人数 from exam group by classid;
select Classid,min(exam) as 成绩 from group by classid order by min(exam) asc;
多列分组查询 示例:1.查询每个班的男生、女生数量
select ClassID as 班级,gender as 性别,count(studentID) as 人数 from student group by ClassID,gender;
注意条件的执行顺序:
where------group by ------聚合函数------having
——示例:
查询1班2班大于50分的最低成绩
select Classid as 班级,min(exam) from group by Classid having min(exam)>50 order by min(exam) asc;
统计除去不及格成绩,平均分在80分以上的人数
select subjectId,avg(exam) as 平均分,count(*) as 人数 from exam where exam>=60 group by subjectId having avg(exam)>80;
执行顺序:首先执行where 子句从数据库筛选数据,然后通过group by 子句将筛选后的数据进行分组,聚合函数进行统计计算;最后,having 子句筛选掉哪些分组后不符合要求的数据行
注意:having后一般来说都是跟聚合函数来当筛选条件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)