问题:一个表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 01:57关注第二个SQL的效率要高!
我对SQL的原理也不是特别了解,只是略懂。
第一个SQL:要把student里面的每条记录,和where后面的条件比较,而每次比较,又要查询这个同学所在班级的平均分
因为每次同学的班级号不同,后半部分查询,数据库也无法做缓存优化!第二个SQL:
1、通过两个数据集的关联来实现,两个数据集,缩小了数据范围。
对与关联,数据库有相当的调整与优化!本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2019-10-18 05:33回答 2 已采纳 1.筛选成绩表分数在60(包括60) select * from 成绩表 where 成绩 >=60 2.按学号分组,按条件过滤 select t1.学号, count(t1.课程号),a
- 2011-08-26 12:31回答 1 已采纳 兄弟怎么一道题发了两遍啊 [code="sql"]select a.id,a.name,b.type,(case when exists a.id=b.id then 'Y' else 'N') f
- 2016-03-22 17:24回答 4 已采纳 oracle的http://www.cnblogs.com/luluping/archive/2012/07/26/2610705.html
- 2018-05-07 16:11梦寐芊荨的博客 Sql常见面试题(总结)1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90A: ...
- 2016-12-11 07:37回答 4 已采纳 ``` where tzid = '" + $tzid + "'"); ```
- 2017-02-02 20:03回答 2 已采纳 1楼是正解。 加上别名可能更容易理解些。 ``` SELECT t1.下单账号, t1.下单日期, t1.贡献金额, ( SELECT
- 2017-05-08 01:39回答 4 已采纳 表名后面少了个set
- 2020-05-14 08:30牧小农的博客 最近小农在找工作,因为今年疫情的特殊原因,导致工作不是特别好找,所以一旦有面试电话,如果可以,都会去试一试,刚好接到一个面试邀请,感觉公司还不错,于是就确定了面试时间,准备了一下就去面试了。...
- 2017-09-09 00:24回答 10 已采纳 考试题? SELECT '1' 列名,(SELECT SUM(数值列) FROM 表 WHERE NAME = 'aa') aa, (SELECT SUM(数值列) FROM 表 WHERE NAM
- 2018-05-08 21:59回答 9 已采纳 while(rs111.next()){ int id = rs.getInt("id"); System.out.println("id:"+id); }??
- 回答 4 已采纳 拉取数据错误,我怎么知道?不去找抓取数据的人,写爬虫的人,问拿数据的人? 应该指的是传输过程中丢包导致接收数据错误的问题。 那就可以参考协议的处理思路了,比如数据头带数据总长度,接收完数据长度
- 2024-11-11 02:43不二人生的博客 SQL面试题——连续出现次数 其实前面关于连续问题,我们遇到过,就是最大连续登陆天数,或者是连续登陆天数的计算,可以参考我们之前的文章 SQL面试题——最大连续登陆问题 最大连续登陆问题 最大连续登陆问题的难点...
- 2017-12-04 17:23回答 1 已采纳 嵌套那么多子查询,还用in ,还有like 不慢才怪!!!!!!!!!!!,建议in 和子查询 都换成 关联查询,like 的话 只用 like ‘param%’, 这些都是不会用索引的操作,还用就
- 2019-04-04 06:13ConstXiong的博客 每次自己想跳槽的时候,内心总是担忧着那些面试题怎么解答。 很多问题在实际工作中并不会遇到,没有实际的解决问题经验,看过也记不住。 假如我明年需要换工作,那现在把下次的面试准备工作,拆分、融入到平时的...
- 2019-08-16 00:37快乐敲代码的博客 一道SQL语句面试题,关于group by表内容: info 表 date result 2005-05-09 win 2005-05-09 lose 2005-05-09 lose 2005-05-09 lose 2005-05-10 win 2005-05-10 lose 2005-05-10 lose 如果要生成下列结果, 该如何写...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司