oracle-按平均成绩从高到低显示所有学生的课程成绩

        按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

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;

查询结果:


 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kenick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值