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

时间:2022-10-17 08:22:28

-- 纯手打和排版,自己一定要记录下^_^

按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生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;
查询结果:

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