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后作为子句来用
大约 2 年之前 回复
oiu1010110
oiu1010110 谢谢,那如果我要列出学号,是不是只能用上面的子查询呢?
大约 2 年之前 回复
CSDNXIAON
CSDNXIAON   2016.05.07 21:52

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Group by无法排序,但可以通过子查询实现
select * from table where id in (select max(id) from table where tid in(0,10) group by name) ORDER BY id DESC 上面代码是经过我实践过可以正常使用的,网上资料有人说下面的代码也可以实现,但我试过不行,不过也提供出来仅供大家参考吧。 SELECT * FROM (SELECT *
SQL中子查询和group by查询
1、SQL中的子查询:在做sql题时,我们最怕遇到条件复杂的查询语句,因为大多时候需要两三个子查询来实现,而大多数同学,可以说都比较怕子查询的,以前我也被这些题目弄的云里雾里的,不过做多了这类的题目后发现,其实也有一定规律,我们可以总结一套适合自己的方法来处理,下面时我对该类题目的处理方法:有购物表如下:题目: 查询购物商品类型不只一种的购物者的信息。 我
group by 字段 count 中包含子查询 优化 方式
count 分组 统计 时的子查询 优化
SQL 部分函数的使用,子查询,group by,虚拟字段,case……
--1/显示面积小于仓库平局面积的仓库信息: SELECT 面积 FROM 仓库 WHERE 面积<(SELECT AVG(面积) FROM 仓库); --2/统计性别为女,工资大于1500的职工人数: SELECT COUNT(*) FROM 职工 WHERE sex='女' AND 工资>1500;--3/显示仓库表中有多少个仓库号: SELECT COUNT(仓库号) FROM 仓库;--4/
MySQL子查询优化-子语句含有group by时
当我使用Mysql进行下列语句的查询时: select count(1) from jy_info_user  where user_card != ''  and id IN (select id from jy_erp.jy_info_user where ifnull(user_card,'')!='' group by user_card HAVING count(1)=1 )
高级sql学习——相关子查询和非相关子查询!!!
<br />子查询:嵌套在其他查询中的查询称之。<br />子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。<br />所有的子查询可以分为两类,即相关子查询和非相关子查询 <br />1>非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 <br />2>相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。<br />故非相关子查询比相关子查询效率高<br /> <br />非相关子查:<br />select t1.ename,t
MySQL SQL优化案例:相关子查询(dependent subquery)优化
原始语句: SELECT t1.* FROM t_payment_bank_account_info t1 WHERE EXISTS ( SELECT 1 FROM t_payment_account_dtl t2 WHERE t1.account_no = t2.account_no AND t2.parent_a
top-n问题,相关子查询,from后接select
--解决top-n分析问题 使用伪列rownum SQL&amp;gt; --rownum 行号 伪列 SQL&amp;gt; select rownum,empno,ename,sal from emp; ROWNUM EMPNO ENAME SAL ...
在SQL Server中使用相关子查询
子查询是指将一条SQL Sever语句嵌入到另一条SQL Sever语句中。数据库引擎将子查询做为虚表执行查询操作。子查询可做为连接语句中的一个表,可做为选择语句中的一个值,也可以是SQL Sever查询子句,还可以是SQL Sever查询子句的字句,与数据操作语句混合在一起。子查询的执行依赖于嵌套查询。查询树从最里层开始,一层一层向外执行。高层的嵌套查询可以访问低层嵌套查询的结果。什么是
SQL关于相关子查询与EXISTS的简单总结
期末复习题里面碰到了SQL查询有关 相关子查询 的内容,经过网上各种资料各种看,下面整理于此。 我们先看下面一道题。 建表格如下: 查询:给出被所有学生借阅过的图书类别(类别,catname),注意类别为c1的显示为“计算机”,其它类别显示“其他”。 答案: select case catid when 'c1' then '计算机' else '其它' end as 类别,