实验目的:掌握分组查询的方法,掌握数据排序的方法和数据汇总的方法。
实验原理:使用 SQL查询语句、SELECT语句、WHERE语句、运算符和比较条件、聚合函数、排序、分组、连接操作。
1.统计各门课程的选修人数。
use XSCJ
go
select cno,count(sno) as 选修人数 from sc group by cno
2.分别统计男女生的平均年龄。
select ssex,count(sage) as 平均年龄 from student group by ssex
3.查询所有科目成绩在85分以上的学生的学号及平均分。
select sno,avg(grade) as 平均分 from sc group by sno
having min(grade)>=85
4.查询平均年龄大于18岁的系部和平均年龄。
select sdept,avg(sage) as 平均年龄 from student group by sdept
having avg(sage)>18
5.查询选修2101课程的所有学生信息,并按成绩降序排列。
select * from sc where cno='2101' order by grade desc
6.查询sc中课程号为2101的记录,并将结果保存入表sc1中。
select * into sc1 from sc where cno='2101'
7.查询学生的详细信息,并返回学生的总人数和平均年龄。
select * from student order by sage asc COMPUTE count(sno),avg(sage)
8.查询学生的详细信息,同时返回每个年龄段的学生的总人数和平均年龄。
select * from student order by sage desc compute count(sno),avg(sage) by sage
实验小结:
用group by子句进行分组查询,如果使用group by子句,则select 子句中的列只能分组项字段和聚合函数(group by 要跟select后的聚合函数前的字段一致)。用order by子句用于对查询结果进行排序,升序用ASC,降序用DESC,COMPUTE BY子句为各组生成汇总值,对同一组计算多个聚合函数。