#17.查詢學過編號為"02"但沒有學過編號為"01"課程的學生信息和相關課程成績
select *
from t_student sinner join t_score sc on s.stu_id = sc.s_stuid
where s.stu_id in (select sc1.s_stuid from t_score sc1 where sc1.s_cid = 02)and s.stu_id not in (select sc2.s_stuid from t_score sc2 where sc2.s_cid = 01);#18. 查詢同時選修了"01"課程和"02"課程的學生信息及相關課程成績
select *
from t_student s
where s.stu_id in (select sc1.s_stuid from t_score sc1 where sc1.s_cid = 02)and s.stu_id in (select sc2.s_stuid from t_score sc2 where sc2.s_cid = 01);#19. 查詢選修了"01"課程但可能沒有選修"02"課程的學生信息及相關課程成績(不存在時顯示為0)
select *
from t_student sinner join t_score sc on s.stu_id = sc.s_stuid
where s.stu_id not in (select sc1.s_stuid from t_score sc1 where sc1.s_cid = 02)and s.stu_id in (select sc2.s_stuid from t_score sc2 where sc2.s_cid = 01);#20. 查詢平均成績大于等于 60 分的同學的學生編號和學生姓名和平均成績(成績保留2位小數)
select round(avg(sc.s_score), 2), s.stu_name, s.stu_id
from t_student sinner join t_score sc on s.stu_id = sc.s_stuid
group by s.stu_name, s.stu_id
having avg(sc.s_score >= 60);#21. 查詢所有同學的學生編號、學生姓名、選課總數、所有課程的成績總和** (沒有選課的學生顯示為0)
select s.stu_id, s.stu_name, COUNT(sc.s_score), sum(sc.s_score)
from t_student sinner join t_score sc on s.stu_id = sc.s_stuid
group by s.stu_id, s.stu_name;#22. 查詢學過「張三」老師授課的同學的信息
select distinct s.*
from t_student sinner join t_score sc on s.stu_id = s.stu_idinner join t_course co on sc.s_cid = co.c_idinner join t_teacher t on co.c_teaid = t.tea_id
where t.tea_name = '張三' order by s.stu_id;#23. 查詢沒有學全所有課程的同學的信息
select s.stu_id,s.stu_name,count(sc.s_score) from t_student s inner join t_score sc on s.stu_id = sc.s_stuid inner join t_course co on sc.s_cid = co.c_id group by s.stu_id,stu_name having count(sc.s_score) != 3;#24. 查詢至少有一門課與學號為"01"的同學所學相同的同學的信息(不含學號為"01"的學生)
select distinct s.* from t_student s inner join t_score sc on s.stu_id = sc.s_stuid where sc.s_cid in (select sc1.s_cid from t_score sc1 where sc1.s_stuid = 01);