10.查询没学过[张三]老师讲授的任一门课程的学生姓名
-- 筛选出学过张三老师课程的学生id --
select a.sid
from sc a
left join course b
on a.cid = b.cid
left join teacher c
on b.tid = c.tid
left join student d
on a.sid = d.sid
where c.tname = '张三';
-- 使用not in 筛选出没有选修张三老师课程的学生信息 --
select
from student a
where sid not in (select a.sid
from sc a
left join course b
on a.cid = b.cid
left join teacher c
on b.tid = c.tid
left join student d
on a.sid = d.sid
where c.tname = '张三');
11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
select a.sid,b.sname,avg(a.score) as avg_score
from sc a
left join student b
on a.sid = b.sid
where a.score < 60
group by a.sid
having count(a.cid) >= 2;
12.检索01课程分数小于60,按分数降序排列的学生信息
-- 筛选出01课程分数小于60分的学生id和分数 --
select sid,score
from sc
where score < 60 and cid = '01';
-- 与student表关联,筛选出学生信息 --
select b.*,a.score
from (select sid,score
from sc
where score < 60 and cid = '01') a
left join student b
on a.sid = b.sid
order by score desc;
13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
-- 筛选出每个学生的平均成绩和学生id --
select sid,avg(score) as avg_score
from sc
group by sid;
-- --
select a.*,avg_score
from sc a
left join (select sid,avg(score) as avg_score
from sc
group by sid) b
on a.sid = b.sid
order by avg_score desc;