i46614161 2010-07-17 23:30
浏览 199
已采纳

一道关于SQL的面试题,大家帮我看看

问题:一个表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,我想知道上面两种方法哪种效率高点?为什么?

  • 写回答

2条回答 默认 最新

  • iteye_15273 2010-07-19 09:57
    关注

    第二个SQL的效率要高!
    我对SQL的原理也不是特别了解,只是略懂。
    第一个SQL:要把student里面的每条记录,和where后面的条件比较,而每次比较,又要查询这个同学所在班级的平均分
    因为每次同学的班级号不同,后半部分查询,数据库也无法做缓存优化!

    第二个SQL:
    1、通过两个数据集的关联来实现,两个数据集,缩小了数据范围。
    对与关联,数据库有相当的调整与优化!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。