2 orange winter orange_winter 于 2015.07.11 16:47 提问

查询Score表中的最高分的学生学号和课程号? 10C

图片说明
图片说明

我只写出了一部分,具体代码如下:

SELECT SCORE.CNO,MAX(DEGREE)最高分
FROM SCORE,COURSE
WHERE SCORE.CNO=COURSE.CNO
GROUP BY SCORE.CNO

返回结果如图:图片说明

之后我就不知道该如何写了?而且怎么写,也得不到我想要的结果。

10个回答

u012418845
u012418845   2015.07.11 17:01

select sno,cno from score where degree in (select max(degree) from degree);

baidu_35908299
baidu_35908299 谢谢大神了
一年多之前 回复
orange_winter
orange_winter 你是这样理解的吗?
2 年多之前 回复
guwei4037
guwei4037   Ds   Rxr 2015.07.11 18:00

如果是要求每个学生各自成绩最高的课程号、学号以及成绩的话,可以参考:http://blog.csdn.net/chinacsharper/article/details/45644691

sinat_26983449
sinat_26983449   2015.07.11 22:25

_ tno是课程号吧?_

sinat_26983449
sinat_26983449   2015.07.11 23:16

SELECT s.sno,c.tno
FROM SCORE s, COURSE c
WHERE s.cno=c.cno AND s.degree=(SELECT MAX(degree)FROM score);


如果课程号是tno的话,是应该这样写. 查出来的就是最高分的学生学号和课程号.

ctan
ctan   2015.07.11 23:54

我猜你的意思是想查询Score表中的每门课程的最高分的学生学号和课程号,
可以这样:
select score.sno,score.cno,maxscore.最高分
from score,(select score.cno,max(degree) 最高分
from score
group by score.cno) maxscore
where score.cno=maxscore.cno and score.degree=maxscore.最高分

思路就是. 把你前面的查询结果作为一个表, 再与score连接查询,
另外, 按照你的说法, 只需要一个表score就可以了

ctan
ctan   2015.07.12 00:00

查询结果如下:

qq_29751751
qq_29751751   2015.07.12 10:31

如果ton是课程号的话,可以用两表连查join on

select con,ton,max(degree) from score join course on score.con=course.con where group by con,ton

u013829202
u013829202   Rxr 2015.07.14 14:57

你是没理解题目的意思, 查询表中的最高分的学生学号和课程号,只需要获取最高分的那个学生不就出来了。

CSDNXIAON
CSDNXIAON   2015.07.16 15:23

查询仅仅选修了指定的两门课程的学生学号
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

showbo
showbo   Ds   Rxr 2015.07.11 17:00

这样就行了吧,干嘛还要查询course表。你由不是获取课程名称什么的,要是获取可以将下面的作为子查询,在left join下course表获取cname什么的

 SELECT sno,cno,MAX(DEGREE)最高分
FROM SCORE
GROUP BY sno,cno
Csdn user default icon
上传中...
上传图片
插入图片