关于平均成绩的sql语句

question1375050 2013-10-01 06:08:34
有三张表分别是student(sno,sname,sdept),course(cno,cname,credit)和sc(sno,cno,grade)
现在要求超过平均分的学生的姓名sname和系名sdept。
...全文
459 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用基本的sql做出来 不知道是这个意思不 另外 我说的是上面列举的数据 没代表性 一个系的人员就列了一个 怎么比 肯定都会查出来了

with student as
(
     select '95001' sno,'李勇' sname,'CS' sdept from dual union all
     select '95002' sno,'刘晨' sname,'IS' sdept from dual union all
     select '95003' sno,'王敏' sname,'MA' sdept from dual union all
     select '95004' sno,'张立' sname,'IS' sdept from dual 
),SC as
(
     select '95001' sno,1 cno,92 grade from dual union all
     select '95001' sno,2 cno,85 grade from dual union all
     select '95001' sno,3 cno,88 grade from dual union all
     select '95002' sno,2 cno,90 grade from dual union all
     select '95003' sno,3 cno,80 grade from dual 
)

select t1.sname,t1.sdept
from student t1,
(select sno,avg(grade) sg
from sc
group by sno) t2,
(select sdept,avg(grade) ag
from student a,sc b
where a.sno = b.sno
group by sdept) t3
where t1.sno = t2.sno and t1.sdept = t3.sdept 
      and t2.sg >= t3.ag
question1375050 2013-10-02
  • 打赏
  • 举报
回复
结果就是查出平均成绩超过平均分的学生信息啊。
question1375050 2013-10-02
  • 打赏
  • 举报
回复
好好好。。。。。。 哈哈。
  • 打赏
  • 举报
回复
引用 12 楼 u012307081 的回复:
谢谢你哈。..
结贴给分 大半夜的 回个贴不容易
question1375050 2013-10-02
  • 打赏
  • 举报
回复
谢谢你哈。..
  • 打赏
  • 举报
回复
这些数据 看着貌似没什么代表性吧 每个系的平均分 上面这些 最后得出的结果是什么
question1375050 2013-10-01
  • 打赏
  • 举报
回复
student表 Sno Sname Ssex Sage Sdept 95001 李勇 男 20 CS 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS Course表 Cno Cname Cpno Credit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL语言 6 4 SC表 Sno Cno Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80
  • 打赏
  • 举报
回复
上面这个回复 意思不大懂 "那么当求每个学生平均成绩" 不是求超过系平均分就可以了么 要学生平均分干嘛? 这个平均分还是没定义明确 最好上一点测试数据和想要的结果 不然容易混淆 一般的基础思路 根据要求扩展 具体的要看实际数据了 select 姓名,系名 from ... where 分数 > (select avg(分数) from t where t.系名=系名)
question1375050 2013-10-01
  • 打赏
  • 举报
回复
如果是查询超过所在系平均成绩的学生姓名和所在系的话,那么当求每个学生平均成绩 select sname,sdept from student,sc where student.sno=sc.sno group by sname having avg(grade) 求每个系平均成绩 select sname,sdept from student,sc where student.sno=sc.sno group by sdept,sname 然后怎么合起来呢?
  • 打赏
  • 举报
回复
3个表关联查询 为什么不能出现在group by后面呢 最好上数据吧 和想要的结果 平均分定义还是有歧义
question1375050 2013-10-01
  • 打赏
  • 举报
回复
可是sname既不会出现在group by子句里也不会出现在聚集函数里
  • 打赏
  • 举报
回复
如果就要基础一点的语句 可以直接通过子查询 查出每门课的平均分数 然后比较就行了
question1375050 2013-10-01
  • 打赏
  • 举报
回复
please。。。。。。
Wentasy 2013-10-01
  • 打赏
  • 举报
回复
这是最基本的SQL啦,楼主自己多想想啊!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧