-- 有 3 个表 S(学生表),C(课程表),SC(学生选课表)
-- S(SNO,SNAME)代表(学号,姓名)
-- C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
-- SSC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
-- 问题:
-- 1,找出没选过“黎明”老师的所有学生姓名。
-- 2,列出 2 门以上(含2 门)不及格学生姓名及平均成绩。
-- 3,即学过 1 号课程又学过 2 号课所有学生的姓名。
1.找黎明课号 不参与该课号的学生 找出学生名称
select s.sno,s.SNAME
from s join (
select DISTINCT sno
from ssc where cno not in(SELECT cno from c where CTEACHER="黎明")) ss
where s.sno=ss.sno
2.不及格学生列表, 抽取不及格个数大于2的学生 该学生 平均成绩 和名称
select s.sname,avg(ssc.SCGRADE)
from ssc join s
where ssc.sno= (select sno from ssc where SCGRADE <60 HAVING count(sno)>=2)
3.查出学过1和2 的 ,学号分组,统计出现过2个cno的sno 找姓名
select s.sname from
s join (select sno,COUNT(*)t from ssc where cno in(1,2) GROUP BY SNO HAVING t=2) ss
where s.sno=ss.sno