SQL语句 平均分数比较 成绩比较 连接查询

实验内容(注意,以下“2020***,吴***”请根据自己实际表值定)

1、附加或还原第二次实验的数据库。

2、完成以下语句的编写(以下题目中,条件的具体取值可以自定义)

1)查询指定学号的学生的所有课程的课程号,成绩

2)查出所有学生的学号,姓名,选课名称及成绩

3)查出所有有“大学英语一”成绩的学生姓名

4)查询学号为“2020***”的学生的所有课程的课程号,课程名,学分和成绩

5)查出所有的“高级语言程序设计”课程的不及格学生的学号

6)查询所有比“2020&***”同学年龄小的学生信息

7)统计“**”同学的平均成绩

8)查出所有平均成绩比“**”同学的高的学生信息

9)统计“数据库”课程的平均成绩

10)统计所有“数据库”课程成绩比“数据库”课程的平均成绩高的所有学生名单

11)参照10)完成统计所有“数据库”课程成绩比“数据库”课程的平均成绩低的所有学生名单

12)查出所有没有“大学英语一”成绩的学生名单

一、原有的数据表

1、class

包含classno(班级号)、classinfo(班级名)

2、course

包含cno(课程号)、cname(课程名)、credit(学分)

3、score

包含sno(学生号)、cno(课程号)、sscore(课程成绩)

4、student

包含sno(学号)、sname(学生姓名)、classno(班级号)、sbrithday(学生生日)、ssex(学生性别)

二、题目解答

1)查询指定学号的学生的所有课程的课程号,成绩

SELECT sno,CNO,sscore     
FROM score
where sno = 945

2)查出所有学生的学号,姓名,选课名称及成绩

select student.sno,sname,cname,sscore   
from course,score,student
where student.sno = score.sno and score.cno = course.cno

3)查出所有有“大学英语一”成绩的学生姓名


select sname       
from student
where (sno in (select sno
               from score
			   where cno = (select cno
			                from course
							where cname = '大学英语一')))select 

4)查询学号为“2020***”的学生的所有课程的课程号,课程名,学分和成绩

course.cno,cname,credit,sscore    
from course,score,student
where student.sno = 2020210985 and student.sno =score.sno and score.cno =course.cno

5)查出所有的“高级语言程序设计”课程的不及格学生的学号

select sno as 学号   
from score
left outer join course
on score.cno=course.cno
where course.cname='高级语言课程设计' and score.sscore<60

6)查询所有比“2020&***”同学年龄小的学生信息

select *                    
from student
where sbrithday>'2002.03.24'

7)统计“**”同学的平均成绩

select avg(sscore) as avgscore  
from score
where (sno in (select sno
               from student
			   where sname ='妙'))

8)查出所有平均成绩比“**”同学的高的学生信息

select student.sno,student.sname,student.classno,student.sbrithday,student.ssex 
from student ,score
where student.sno=score.sno
group by student.sno,student.sname,student.classno,student.sbrithday,student.ssex
having AVG(score.sscore)>(select AVG(sscore) from score,student where sname='妙' and student.sno=score.sno)

9)统计“数据库”课程的平均成绩

select avg(sscore) as avgscore  
from score
where cno='C001'

10)统计所有“数据库”课程成绩比“数据库”课程的平均成绩高的所有学生名单

select sname    
from score,student
where score.sno=student.sno and cno = 'C001' 
and sscore > (select avg(sscore) as avgscore
from score
where cno='C001')

11)参照10)完成统计所有“数据库”课程成绩比“数据库”课程的平均成绩低的所有学生名单

select sname  
from score,student
where score.sno=student.sno and cno = 'C001' 
and sscore < (select avg(sscore) as avgscore
from score

12)查出所有没有“大学英语一”成绩的学生名单

select sname  
from student 
where (not exists(select *
                  from score
				  where sno = student.sno and cno = 'C004'))

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你可以使用以下 SQL 语句计算每门课程的平均分: ``` SELECT course.course_id, course.course_name, AVG(score.score) AS avg_score FROM course JOIN score ON course.course_id = score.course_id GROUP BY course.course_id, course.course_name; ``` 其中,`JOIN` 语句用于连接 `course` 和 `score` 表;`AVG()` 函可以计算出每门课程的平均分;`GROUP BY` 语句用于按照课程分组。执行以上 SQL 语句后,将会返回每门课程的平均分,例如: ``` 01 语文 85.0000 02 学 78.6667 03 英语 88.3333 ``` 另外,如果你想要统计每个学生的各门课程成绩,可以使用以下 SQL 语句: ``` SELECT student.student_id, student.student_name, course.course_id, course.course_name, score.score FROM student JOIN score ON student.student_id = score.student_id JOIN course ON score.course_id = course.course_id; ``` 执行以上 SQL 语句后,将会返回每个学生的各门课程成绩,例如: ``` 0101 赵一 01 语文 90 0101 赵一 02 学 80 0101 赵一 03 英语 95 0102 钱二 01 语文 80 0102 钱二 02 学 78 0102 钱二 03 英语 85 0103 孙三 01 语文 75 0103 孙三 02 学 85 0103 孙三 03 英语 90 0104 李四 01 语文 88 0104 李四 02 学 70 0104 李四 03 英语 92 0105 赵五 01 语文 85 0105 赵五 02 学 80 0105 赵五 03 英语 82 0106 赵六 01 语文 90 0106 赵六 02 学 85 0106 赵六 03 英语 90 0107 钱七 01 语文 75 0107 钱七 02 学 80 0107 钱七 03 英语 95 0108 钱八 01 语文 80 0108 钱八 02 学 75 0108 钱八 03 英语 80 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值