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
原文地址:https://www.cnblogs.com/junhuang/p/4111704.html