------------------程序做得再好,数据有问题照样是个死 !

分组统计:count,group by,having, order by

--统计男女生的总人数
select COUNT(*) from Student where Sex='男'
select COUNT(*) from Student where Sex='女'
--统计每一个班级的总人数
select COUNT(*) from Student where ClassId=1
--分组统计:需要按班级分组,每一个组得到一个统计结果
--select 字段列表 from 表列表 where 数据源筛选 group by 分组字段列表 order by 排序字段列表
select classid, COUNT(*) from Student group by ClassId
--使用分组统计男女生总人数
select sex, COUNT(*) from Student group by sex

--分组统计的细节:
select sex, COUNT(*) from Student
select sex from Student
select COUNT(*) from Student
--sql语句执行的顺序
--5 显示 1 2 3 4 6
--select 字段列表 from 表列表 where 数据源的筛选 group by 分组字段列表 having 分组统计结果集的筛选 Order by 排序字段列表
--语法规则:聚合不应出现在 WHERE 子句中,聚合函数应该使用在having中
--where是对源数据进行筛选的,但是having是对分组统计所获取的结果集进行筛选的。
select classid, COUNT(*) as cnt from Student where Address is not null group by ClassId having COUNT(*)>2 order by cnt


--查询每一个班级男女生的总人数
select classid,sex, COUNT(*) from Student group by ClassId,Sex order by ClassId
--
select top 2 * from Student
select top 2 * from Student order by StudentName
--当你看到 每个 不同 各自 的时候,就考虑分组
--1.查询每个班级的总学时数,并按照升序排列 subject
select ClassId,SUM(ClassHour) from Subject group by ClassId order by SUM(ClassHour)
--2.查询每个参加考试的学员的平均分 result
select (select studentname from Student where StudentNo=result.StudentNo),AVG(StudentResult) from Result group by StudentNo
--3.查询每门课程的平均分,并按照降序排列 result
select SubjectId 科目ID,AVG(StudentResult) 平均分 from Result group by SubjectId order by 科目ID Desc
--4.查询每个班级男女生的人数 --多字段分组
select classid,sex, COUNT(*) from Student group by ClassId,Sex order by ClassId

posted @ 2015-03-19 22:05  俊落笔如歌  阅读(1162)  评论(0编辑  收藏  举报
           人的本事不是与生俱来的,不是你掌握了多少,而是当你面对一个未知问题的时候,你能用多少时间来掌握!       ---------俊落笔如歌