1、查询各科成绩(courseNo)最高和最低的分,以如下的形式显示:课程号、最高分、最低分
select courseno 课程号, max(score) 最高分, min(score) 最低分 from scores group by courseno;
2、查询每门课程被选修的学生数
select courseno 课程号, count(courseno) 总数 from scores group by courseno;
3、查询男生女生人数分别为多少
select sex 性别, count(sex) 人数 from students group by sex;
4、查询平均成绩大于60分学生的学号和平均成绩
-- 代码一:
select studentNo 学号, avg(score) 平均成绩 from scores group by studentNo having avg(score)>60;
-- 代码二:
select * from (select studentNo 学号, avg(score) 平均成绩 from scores group by studentNo) a where 平均成绩>60;
5、查询至少选修两门课程的学生学号(去重)
select studentNo from (select studentNo, count(courseNo) 总数 from scores group by studentNo) a where 总数>=2;
6、查询同名同姓学生名单并统计同名人数
select name, count(*) from students group by name;
7、查询不及格的课程并按课程号从大到小排列
select * from scores where score<60 order by courseNo desc;
8、查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列
select avg(score) 平均成绩 from scores group by courseNo order by 平均成绩 asc, courseNo desc;
9、检索课程编号为“0004”且分数小于60的学生学号,结果按分数降序排列
select studentNo from scores where courseNo='0004' and score<60 order by score desc;
10、统计每门课程的学生选修人数(超过2人的课程才统计,要求输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序)
select * from (select courseNo, count(courseNo) 总数 from scores group by courseNo order by 总数 desc, courseNo asc) where 总数>2;
11、查询两门以上不及格课程的同学的学号及其平均成绩
-- 代码一:
select studentNo, 平均成绩 from (select avg(score) 平均成绩, count(studentNo) 总数 from (select * from scores where score < 60) group by studentNo) where 总数>2;
-- 代码二:
select studentNo 学号, avg(score) 平均成绩 from scores where score<60 group by studentNo having count(courseNo)>2;
12、查询学生的总成绩并进行排名
select name *, sum(score) 总成绩 from scores group by studentNo order by desc;
13、查询所有课程中成绩小于60分学生的学号和姓名
select st.studentNo, st.name from students st right join scores sc on st.studentNo = sc.studentNo where score<60;
14、查询只选修了2门课程的全部学生的学号和姓名
select * from (select st.studentNo, st.name, count(st.studentNo) 课程总数 from students st left join scores sc on st.studentNo = sc.studentNo group by st.studentNo) where 课程总数=2;