数据库实验6 数据库的分组查询和统计查询

  • Post author:
  • Post category:其他



实验6 数据库的分组查询和统计查询

  • 6.1实验目的及要求

    熟练掌握数据查询中的分组、统计、计算和集合的操作方法

  • 6.2实验内容

使用聚集函数查询、分组计算查询、集合查询

  • 6.3实验步骤

6.3.1使用聚集函数

1.查询学生总人数;

Select Count(*) as 学生总数 from student;

在这里插入图片描述

2.查询选修了选修课程的学生总数

Select count(distinct sno)as 选课学生总数 from sc;

在这里插入图片描述

3.查询所有课程的总学分数和平均学分数,以及最高学分和最低学分

Select sum(credit) as 总credit,avg(credit) as 课程平均分,max(credit) as 最高学分,min(credit) as 最低分学 from course;

在这里插入图片描述

4.计算1号课程的学生的平均成绩,最高分和最低分;

Select avg(grade) as 平均成绩,max(grade) as 最高分,min(grade) as 最低分 from sc where cno=’1’;

在这里插入图片描述

5.查询‘信息系’(IS)学生“数据结构”课程的平均成绩:

Select avg(grade) from student,course,sc where student.sno=sc.sno and course.cno=sc.cno and sdept=’IS’and cname=’数据结构’;

在这里插入图片描述

6.查询每个学生的课程成绩最高的成绩信息(sno,cno,grade);

Select * from sc A where grade=(select max(grade) from sc where sno=A.sno);

在这里插入图片描述

7.求成绩低于该门课程平均成绩的学生的成绩信息(sno,cno,grade)

Select * from sc A where grade=(select avg(grade) from sc where cno=A.cno);

在这里插入图片描述

6.3.2分组查询

8.查询各系的学生的人数并按人数从多到少排序;

Select sdept,Count(*) as 人数 from student group by sdept order by 人数 desc;

在这里插入图片描述

9.查询各系的男女生学生总数,并按系别,升序排列,女生排在前面;

Select sdept,ssex,Count(*) as 人数 from student group by sdept,ssex order by sdept,ssex desc;

在这里插入图片描述

10.查询选修了3门课程已上的学生的学号和姓名;

select sno,sname from student where sno in(select sno from sc group by(sno)having count(

)>3);

在这里插入图片描述

11.查询每个学生所选课程的平均成绩,最高分,最低分,和选课门数;

Select sno,avg(grade) as 平均成绩,max(grade) as 最高分,min(grade) as 最低分,

Count(

)as 选课门数 from sc group by sno;

在这里插入图片描述

12.查询至少选修了2门课程的学生的平均成绩:

Select sno,avg(grade)as 平均成绩 from sc group by sno having count(sno)>=2;

在这里插入图片描述

13.查询平均分超过80分的学生的学号和平均分:

Select sno,avg(grade) as 平均成绩 from sc group by sno having avg(grade)>=80;

在这里插入图片描述

比较:求各学生60分以上课程的平均分:

Select sno,avg(grade) as 平均成绩 from sc where grade>=60 group by sno;

在这里插入图片描述

14.查询“信息系”(IS)中选修了5门课程以上的学生的学号:

Select sno from sc where sno in(select sno from student where sdept=’IS’)group by sno having count(*)>=2;

在这里插入图片描述

6.3.3集合查询

15.查询数学系和信息系的学生的信息;

Select * from student where sdept=’网络工程’union select * from student where sdept’软件工程’;

在这里插入图片描述

16.查询选修了1号课程或2号课程的学生的信息;

Select sno from sc where cno=’1’;

Union

Select sno from sc where cno=’2’;

在这里插入图片描述

思考:

1.用两种方法查询平均成绩少于80分的学生的学号。

Select sno from sc group by sno having avg(grade)<80;

Select distinct sno from sc a where(select avg(grade)from sc where sno=a.sno)<80;

2.求各系的“数学”课程的成绩最高的学生的姓名和成绩

Select sname,grade from student A,sc B where A.sno=B.sno and B.grade in(select max(grade) from sc,course,student where student.sno=sc.sno=sc.sno snd sc.cno=course.cno and cname=’数学’group by sdept);