问题:一个表student中有班级classid,学号id,成绩grade 写个sql 查找比该班平均成绩高的学生的班级classid,学号id,成绩grade
方法 1.(题目带的sql)
[code="java"]select a.classid,a.id,a.grade
from student a
where a.grade > (select avg(grade) from student where classid = a.classid); [/code]方法 2._________________________(要求写的sql)
[code="java"]select s.id,s.classid,s.grade from student s,(select avg(grade),classid from student group by classid) d
where s.classid = d.classid and s.grade > d.avg(grade);[/code]
写完之后,要说明哪种方法效率高。
:oops:我就知道写SQL,我想知道上面两种方法哪种效率高点?为什么?
一道关于SQL的面试题,大家帮我看看
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- iteye_15273 2010-07-19 09:57关注
第二个SQL的效率要高!
我对SQL的原理也不是特别了解,只是略懂。
第一个SQL:要把student里面的每条记录,和where后面的条件比较,而每次比较,又要查询这个同学所在班级的平均分
因为每次同学的班级号不同,后半部分查询,数据库也无法做缓存优化!第二个SQL:
1、通过两个数据集的关联来实现,两个数据集,缩小了数据范围。
对与关联,数据库有相当的调整与优化!本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?