MySql笔试题

莱克星顿的枪声 2017-04-18 09:27:45
按平均成绩从高低显示所有学生的“数据库”,“企业管理”,“英语“三门课成绩,按如下形式显示,学生ID,数据库,企业管理,英语,有效课程数,有效平均成绩分

Student(S#,Sname,Sage,Ssex),学生表

S#:学号,Sname:学生姓名,Sage:学生年龄,Ssex:学生性别

Course(C#,Cname,T#)课程表
...全文
421 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
楼主是做出来了分享一下是吗?
不是啊,记录一下
LongRui888 2017-04-19
  • 打赏
  • 举报
回复
貌似写的有点复杂了,可以简化一下。。。
二月十六 版主 2017-04-18
  • 打赏
  • 举报
回复
楼主是做出来了分享一下是吗?
  • 打赏
  • 举报
回复
select p.学生ID,p.数据库,p.企业管理,p.英语,p.有效课程数,round(p.总分/decode(p.有效课程数,0,1,p.有效课程数,p.有效课程数)) 有效平均分
from
(
select t.学生ID 学生ID,
nvl(t.数据库,0) 数据库,
nvl(t.企业管理,0) 企业管理,
nvl(t.英语,0) 英语,
decode(sign(nvl(t.数据库,0)),1,1,0,0)+decode(sign(nvl(t.企业管理,0)),1,1,0,0)+decode(sign(nvl(t.英语,0)),1,1,0,0) 有效课程数,
nvl(t.数据库,0)+nvl(t.企业管理,0)+nvl(t.英语,0) as 总分
from
(
select student.sid 学生ID,
(
select score
from sc
where sc.sid = student.sid
and sc.cid =
(
select course.cid
from course
where course.cname='数据库'
)
) 数据库,
(
select score
from sc
where sc.sid = student.sid
and sc.cid =
(
select course.cid
from course
where course.cname='企业管理'
)
) 企业管理,
(
select score
from sc
where sc.sid = student.sid
and sc.cid=
(
select course.cid
from course
where course.cname='英语'
)
) 英语
from student
) t
)p
order by 有效平均分 desc;

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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