2 oiu1010110 oiu1010110 于 2016.05.07 21:41 提问

SQL 相关子查询与group by的问题,谢谢指导

student(sno,sname,sdept)

course(cno,cname,ccredit)

sc(sno,cno,grade)

1、查询每个系的最高成绩

select x.sno,sdept,grade from student x,sc
where x.sno = sc.sno
and grade =(select max(grade) from sc,student
where sc.sno=student.sno and sdept=x.sdept)

select x.sno,sdept,grade from student x,sc
where x.sno = sc.sno
and grade in(select max(grade) from sc,student
where sc.sno=student.sno and sdept=x.sdept group by sdept)


select sdept,max(grade) from sc,student where sc.sno=student.sno group by sdept

//上面这三种写法结果是一样的,所以我想问第二种的写法的group by sdept是不是多余的呢?

//另外,如果输出要加学号,为什么直接这样是输出了所有,又错了呢?
    select sdept,sc.sno,max(grade) from sc,student where sc.sno=student.sno group by sdept,sc.sno

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.05.07 21:53
已采纳
 select sdept,sc.sno,max(grade) from sc,student where sc.sno=student.sno group by sdept,sc.sno
 这里group by后面有两个字段sdept和sno,表示按系,按学生分组,也就是每个系中每个学生的课程中的最高分,不是每个系所有学生的最高分
danielinbiti
danielinbiti 回复Koreyou: 对,只能把上面sql去掉sno后作为子句来用
一年多之前 回复
oiu1010110
oiu1010110 谢谢,那如果我要列出学号,是不是只能用上面的子查询呢?
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.05.07 21:52

在SQL Server中使用相关子查询
在SQL Server中使用相关子查询
相关子相关子查询和嵌套子查询 [SQL Server]
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!