SQL查询求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 20:15:08
SQL查询求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
student表
Score表
求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
方案一:SELECT Student.SNAME,SCORE.CNO,SCORE.GRADE FROM Student,SCORE
WHERE SCORE.GRADE IN ( SELECT MAX(GRADE)AS MAXXGRADE FROM SCORE GROUP BY SCORE.SNO)AND STUDENT.SNO=SCORE.SNO
方案二:SELECT SNAME ,CNO,GRADE FROM Score Y,Student
WHERE (STUDENT.SNO=Y.SNO)AND Y.GRADE IN (SELECT MAX(GRADE)
FROM SCORE WHERE SNO=Y.SNO GROUP BY SNO)
为什么我第一种写的不是我想要的第二种的答案.
student表
Score表
求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
方案一:SELECT Student.SNAME,SCORE.CNO,SCORE.GRADE FROM Student,SCORE
WHERE SCORE.GRADE IN ( SELECT MAX(GRADE)AS MAXXGRADE FROM SCORE GROUP BY SCORE.SNO)AND STUDENT.SNO=SCORE.SNO
方案二:SELECT SNAME ,CNO,GRADE FROM Score Y,Student
WHERE (STUDENT.SNO=Y.SNO)AND Y.GRADE IN (SELECT MAX(GRADE)
FROM SCORE WHERE SNO=Y.SNO GROUP BY SNO)
为什么我第一种写的不是我想要的第二种的答案.
你好,你展示的第一种sql查询方案,其意思是:先根据score表中的sno分组求每个sno的最高分数.这求得的当然是每个同学的最高分啦,但是只是获得了最高分,没有指定是谁的最高分,导致在前面的【SELECT SNAME ,CNO,GRADE FROM Score Y,Student WHERE (STUDENT.SNO=Y.SNO)】查询结果集中的后面检索条件【AND Y.GRANDE IN (所有人的最高分集合)】,这样系统就会查询分数在“所有人的最高分”里的结果集了.
而第二种方案,除了限定分数范围(最高分),还限定了学生的编号(SELECT MAX(GRADE) FROM SCORE WHERE
SNO=Y.SNO
GROUP BY SNO,sno = y.sno就是限定学生的编号.),所以结果自然不同了.根据你的要求,我给你提供一种查询方式.其实原理是一样的哦.select stu.sname, scr.cno,scr.grade from student stu
left join score scr on scr.sno = stu.sno
where exists (select 1 from (select s.sno,max(s.grade) as mg from score s group by s.sno) t where t.sno = stu.sno
and t.mg = scr.grade)希望能帮助你.
而第二种方案,除了限定分数范围(最高分),还限定了学生的编号(SELECT MAX(GRADE) FROM SCORE WHERE
SNO=Y.SNO
GROUP BY SNO,sno = y.sno就是限定学生的编号.),所以结果自然不同了.根据你的要求,我给你提供一种查询方式.其实原理是一样的哦.select stu.sname, scr.cno,scr.grade from student stu
left join score scr on scr.sno = stu.sno
where exists (select 1 from (select s.sno,max(s.grade) as mg from score s group by s.sno) t where t.sno = stu.sno
and t.mg = scr.grade)希望能帮助你.
SQL查询求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
试写一个SQL语句,查询出各科成绩最高分的同学(包括学生号,科目与成绩)
SQL查询选修了全部课程的学生姓名
用SQL语言,查询选修了两门以上课程的学生号和姓名?
SQL:查询出同时选了2号和3号课程且成绩均已及格的学生姓名(子查询)
数据库SQL语句中 查询选修了全部课程的学生的学号和姓名
用sql查询出课程总分数最高的学生姓名
SQL语句查询每个学生的学号、姓名、平均成绩、最高成绩和最低成绩
sql题 查询每位同学的课程门数、总成绩、平均成绩”的SQL语句是什么
sql 查询二班学生中所有大于一班最高成绩的学生姓名及入学成绩
查询每个学生的各科成绩sql语句
sql 语言查询 查询出有两门不及格的学生信息. 查询各个班级的各门课程的平均分