#**25. 查询和学号"01"同学学习的课程完全相同的其他同学的信息**
select t.stu_id, count(*)
from t_student tinner join t_score sc on t.stu_id = sc.s_stuidinner join t_course co on sc.s_cid = co.c_id
where co.c_id in (select co.c_idfrom t_student t1inner join t_score sc1 on t1.stu_id = sc1.s_stuidinner join t_course co1 on sc1.s_cid = co1.c_idwhere t1.stu_id = 01)
group by t.stu_id
having count(*) = (select count(*)from t_student t1inner join t_score sc1 on t1.stu_id = sc1.s_stuidinner join t_course co1 on sc1.s_cid = co1.c_idwhere t1.stu_id = 01);#26. 查询没学过"张三"老师讲授的任一门课程的学生姓名
select s1.stu_name, s1.stu_id
from t_student s1
where s1.stu_id not in (select s.stu_idfrom t_student sinner join t_score sc on s.stu_id = sc.s_stuidinner join t_course co on sc.s_cid = co.c_idwhere co.c_id in (select co1.c_idfrom t_teacher teinner join t_course co1 on te.tea_id = co1.c_teaidwhere te.tea_name = '张三'));#**27. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩** (成绩保留两位小数)
select s.stu_id, s.stu_name, AVG(sc.s_score)
from t_student sinner join t_score sc on s.stu_id = sc.s_stuid
where sc.s_score < 60
group by s.stu_id, s.stu_name
having count(*) >= 2;#**28. 检索"01"课程分数小于 60,按分数降序排列的学生信息**
select *
from t_student sinner join t_score sc on s.stu_id = sc.s_stuidinner join t_course co on sc.s_cid = co.c_id
where sc.s_score < 60and co.c_id = 01
order by sc.s_score DESC;#**29. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩** (平均成绩保留两位小数)
select s.*, sc.s_score, avg.a
from t_student sinner join t_score sc on s.stu_id = sc.s_stuidinner join (Select Avg(sc1.s_score) as 'a', sc1.s_stuid from t_score sc1 group by sc1.s_stuid) avgon s.stu_id = avg.s_stuid
order by a DESC;#**30. 查询各科成绩最高分、最低分、平均分、选修人数、及格率** (及格率以百分比格式显示)
select MAX(sc.s_score),MIN(sc.s_score),AVG(sc.s_score),COUNT(sc.s_score),concat(FORMAT(((select Count(*) from t_score sc1 where sc1.s_cid = sc.s_cid and sc1.s_score >= 60) /(select Count(*) from t_score sc2 where sc2.s_cid = sc.s_cid)) * 100, 2), '%')
from t_score scinner join t_student s on s.stu_id = sc.s_stuid
group by sc.s_cid;#31. 按各科成绩进行排序,并显示排名, 成绩重复时不保留名次空缺
select s.*, sc.s_cid, row_number() over (PARTITION BY sc.s_cid ORDER BY sc.s_score)
from t_student sinner join t_score sc on s.stu_id = sc.s_stuid;#**32. 按各科成绩进行排序,并显示排名,成绩重复时保留名次空缺**
select s.*, sc.s_cid, RANK() over (PARTITION BY sc.s_cid ORDER BY sc.s_score)
from t_student sinner join t_score sc on s.stu_id = sc.s_stuid;