sql复习-分组
--数据分组-统计信息 --查询每个班级的总人数 select COUNT(8) from Student select ClassId, COUNT(*) from Student group by ClassId --得到男生,女生的总人数 group by按指定的字段进行分类 select sex, COUNT(*) from Student group by sex --与聚合函数一起出现在查询中的其它列,只有两个可能性:被聚合,被分组,它往往就是被分组 select sex, COUNT(*) from Student select distinct sex from Student select COUNT(*) from Student select classid, COUNT(*) from Student select * from Student --顺序不能变 select(5) top/distinct 7 查询字段 from (1)表列表 where (2)对源数据进行筛选 group by(3) 分组统计字段列表 having (4)对分组统计结果集做筛选 order by (6)对最终的结果集做记录重排 --where是对源数据做筛选的。它只能去使用from后面的表中所指定的列 --聚合不应出现在 WHERE 子句中,就意味着聚合函数的条件不能通过where来指定 --如果是对分组之后的结果集做筛选,那么就需要使用having --having的列是从group by中获取的 --对分组统计结果集做筛选后再进行数据的显示。 select ClassId, COUNT(*) num from Student group by ClassId order by num desc select top 2 ClassId, COUNT(*) num from Student group by ClassId order by num desc --1.查询每个班级的总学时数,并按照升序排列 --2.查询每个参加考试的学员的平均分 --3.查询每门课程的平均分,并按照降序排列 --4.查询每个班级男女生的人数 --当你看到类似于:各个,各自,每个,不同这些词的时候需要 考虑分组 select ClassId, SUM(ClassHour) from Subject where ClassId is not null group by ClassId select StudentNo,AVG(StudentResult) from Result group by StudentNo select SubjectId,AVG(StudentResult) from Result group by SubjectId --查询每个班级男女生的人数 select ClassId,sex, COUNT(*) from Student group by ClassId,sex order by ClassId,sex