https://www.cnblogs.com/Eva-J/articles/9688383.html 里面的综合练习题
1、查询男生、女生的人数;
2、查询姓“张”的学生名单;
3、课程平均分从高到低显示
4、查询有课程成绩小于60分的同学的学号、姓名;
5、查询至少有一门课与学号为1的同学所学课程相同的同学的学号和姓名;
6、查询出只选修了一门课程的全部学生的学号和姓名;
7、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
8、查询课程编号“2”的成绩比课程编号“1”课程低的所有同学的学号、姓名;
9、查询“生物”课程比“物理”课程成绩高的所有学生的学号;
10、查询平均成绩大于60分的同学的学号和平均成绩;
11、查询所有同学的学号、姓名、选课数、总成绩;
12、查询姓“李”的老师的个数;
13、查询没学过“张磊老师”课的同学的学号、姓名;
14、查询学过“1”并且也学过编号“2”课程的同学的学号、姓名;
15、查询学过“李平老师”所教的所有课的同学的学号、姓名;
1、查询“生物”课程比“物理”课程成绩高的所有学生的学号;
select * from(
(select * from score where course_id in (select cid from course where cname = '生物')) t1
left join
(select * from score where course_id in (select cid from course where cname = '物理')) t2
ont1.student_id = t2.student_id)
where t1.num > t2.num;
2、查询平均成绩大于60分的同学的学号和平均成绩;
# 先查看每个同学的平均分数
select student_id,avg(num) from score group by student_id;
# 在筛选成绩大于60分的同学的学号和平均成绩;
# select student_id,avg(num) from score group by student_id having avg(num) > 60;
3、查询所有同学的学号、姓名、选课数、总成绩;
# 先查看每个同学的总成绩
select student_id,sum(num) from score group by student_id;
# 学生和课程的关系只有成绩表中存在,因此要获取每个学生选择的课程,需要通过score表
select count(sid),student_id from score group by student_id;
# 将上面两步合并
select sum(num),count(sid),student_id from score group by student_id;
# 将学生的信息和成绩选课情况拼在一起
select sid,sname,sum_num ,count_stu
<