数据库SQL查询问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:27:22
三张表
S(学号,姓名,年龄,专业)
C(选修课程号,选修课名,教师名)
SC(学号,选修课程号,成绩)
用SQL做如下查询
1. 列出成绩在80分以下的学生学号,姓名和80分以下的门数
2. 有两门以上包括两门课程低于80的学生学号,姓名及低于80的门数
3.查询sc表中具有最高分的学生学号和课程号
4.查询成绩比该课程平均成绩低的同学的成绩表

哎呀,老师布置了20个,还有这4个不会做。急,在线等!

1.
select s.学号,姓名,count(*) as '门数'
from s,sc
where 成绩<80 and s.学号=sc.学号
group by s.学号,姓名
2.
select s.学号,姓名,count(*) as '门数'
from s,sc
where 成绩<80 and s.学号=sc.学号
group by s.学号,姓名
having count(*)>=2
3.
select 学号,课程号
from sc
where 成绩=(select max(成绩)
from sc)
4.select 学号,课程号,成绩
from sc a
where 成绩<(select avg(成绩)
from sc b
where a.课程号=b.课程号)
已经测试过的,都没错误

1. select s.学号,s.姓名,ss.cnt from s
left outer join
(select 学号,count(学号) as cnt from sc where 成绩 < 80 group by 学号) ss
on (s.学号 = ss.学号)

2. select s.学号,s.姓名,ss.cnt from s
left outer join
(select 学号,count(学号) as cnt from sc group by 学号 where 成绩 < 80 group by 学号 having count(学号) >= 2)
on (s.学号 = ss.学号)
3. select 学号,课程号,成绩 from sc where
成绩 = (select max(成绩) from sc)
4. select 学号,成绩 from