实验六 带函数查询和综合查询(1)

文章目录

  • 一、实验目的
  • 二、实验内容及要求
  • 三、总结


一、实验目的

1.掌握Management Studio的使用。
2.掌握带函数查询和综合查询的使用。

二、实验内容及要求

1.统计年龄大于30岁的学生的人数。

select count(*) 人数
from Student
where (year(getdate())-year(Birthday))>30

2.统计数据结构有多少人80分或以上。

select count(*) 人数
from StudentGrade
where Course_id =(
select Course_id
from Course
where Course_name='数据结构'
)and grade>=80

3.查询“0203”课程的最高分的学生的学号。(请分别用TOP1和函数来进行查询,并分析它们的区别)

select Stu_id
from StudentGrade
where Course_id='0203' and grade=(
select max(grade)
from StudentGrade
where Course_id='0203'
)
select top 1 stu_id
from StudentGrade
where Course_id='0203'
order by grade desc

4.统计各系开设班级的数目(系名称、班级数目),并创建结果表。(需考虑没有班级的系)

select depar_name 系名,count(Class_id) 班级数目 into  resulttable1
from deparment left join class on Deparment.Depar_id=class.Depar_id
group by Deparment.depar_name

5.选修了以“01”开头的课程的学生学号,姓名,选课的课程号。

select Student.stu_id,stu_name,Course_id
from Student,StudentGrade
where Student.Stu_id=StudentGrade.Stu_id
and Course_id like '01%'

6.统计每科目的最高分、最低分,平均分、总分,并以中文列名显示。

 select max(grade) 最高分,min(grade) 最低分,avg(grade) 平均分,sum(grade) 总分
 from StudentGrade
 group by Course_id

7.所有成绩都在70分以上的学生姓名(提示:使用子查询。需考虑未选课的学生)。

 select Stu_name
 from Student
 where Stu_id in(
     select Stu_id
	 from StudentGrade
	group by stu_id
	having min(grade)>=70
 )

8.“数据库”课程得最高分的学生的学号、姓名和所在系(提示:使用子查询)。

-- 老师给出来的答案
 select student.Stu_id,stu_name,depar_name
   from student,Deparment,class,studentgrade,course
   where Deparment.Depar_id=class.Depar_id and class.Class_id=student.Class_id
   and student.stu_id=studentgrade.Stu_id and course.Course_id=StudentGrade.Course_id
   and course_name='数据库' and grade=(
   select max(grade)
   from studentgrade,course
   where studentgrade.Course_id=Course.Course_id and Course_name='数据库'
   )
-- 我做的
 select Stu_id,Stu_name,depar_name
 from Student,Deparment,class
 where Student.class_id=class.Class_id 
 and class.Depar_id=Deparment.Depar_id
 and stu_id in (
    select Stu_id
	from Studentgrade
	where  grade in (
		 select max(Grade)
		 from StudentGrade
		 where  Course_id =(
		Select Course_id
		from Course
		where Course_name='数据库' 
		) ) and course_id =(
		Select Course_id
		from Course
		where Course_name='数据库' 
		)
	)

9.至少选修了两门课及以上的学生姓名和性别

 select Stu_name,Stu_sex
 from student
 where Stu_id in(
   Select Stu_id
   from StudentGrade
   group by Stu_id
   having count(*)>=2
 )

三、总结

暂时没有,有错可以在评论区call me,大家一起探讨,我的不一定都是对的!!!!

你可能感兴趣的:(mysql,数据库,sql)