oracle如何创建视图

(1)创建视图V_StudInfo,查询学生的学号,姓名,所修课程号,所修课程名称,成绩等级(90~100为优,80~89为良,70~79为中,60~69为及格,60分以下为 不及)。
(2)创建视图V_Stud,查询英语成绩大于75分的学生信息:学号,姓名,所修科目数,平均成绩。(提示:可用分几个视图,逐步实现)

1
create view V_StudInfo
as
select a.学号,a.姓名,b.课程号,b.课程名,
case when c.成绩 between 90 and 100 then '优'
when c.成绩 between 80 and 89 then '良'
when c.成绩 between 70 and 79 then '中'
when c.成绩 between 60 and 69 then '及格'
else '不及格' end æˆç»©ç­‰çº§
from å­¦ç”Ÿè¡¨ a,课程表 b, æˆç»©è¡¨ c where a.学号=c.学号
and b.课程号=c.课程号
 
2
create view V_Stud
as
select a.学号,a.姓名,count(*) æ‰€ä¿®ç§‘目数,avg(成绩) å¹³å‡æˆç»©
from å­¦ç”Ÿè¡¨ a,课程表 b, æˆç»©è¡¨ c where a.学号=c.学号
and b.课程号=c.课程号
and a.学号 in
(select a.学号
from å­¦ç”Ÿè¡¨ a,课程表 b, æˆç»©è¡¨ c where a.学号=c.学号
and b.课程号=c.课程号 and b.课程名='英语' and c.成绩>75)

 

表名和字段名,自己跟你实际的核对一下,不同的改一下

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-29
badkano的 1 保留
create view V_StudInfo
as
select a.学号,a.姓名,b.课程号,b.课程名,
case when c.成绩 between 90 and 100 then '优'
when c.成绩 between 80 and 89 then '良'
when c.成绩 between 70 and 79 then '中'
when c.成绩 between 60 and 69 then '及格'
else '不及格' end 成绩等级
from 学生表 a,课程表 b, 成绩表 c where a.学号=c.学号
and b.课程号=c.课程号

我改一下 badkano 2的写法,没有group分组,下面的应该执行不了。

create view V_Stud
as
select a.学号,a.姓名,count(*) 所修科目数,avg(成绩) 平均成绩
from 学生表 a,课程表 b, 成绩表 c where a.学号=c.学号
and b.课程号=c.课程号
and a.学号 in
(select a.学号
from 学生表 a,课程表 b, 成绩表 c where a.学号=c.学号
and b.课程号=c.课程号 and b.课程名='英语' and c.成绩>75)

------------------------------------------------------------------------------------
修改如下
2
create view V_Stud
as
select a.学号,max(a.姓名) 姓名,count(*) 所修科目数,avg(成绩) 平均成绩
from 学生表 a,课程表 b, 成绩表 c
where a.学号=c.学号
and b.课程号=c.课程号
group by d a.学号
having a.学号 in
(select a.学号
from 学生表 a,课程表 b, 成绩表 c
where a.学号=c.学号
and b.课程号=c.课程号 and b.课程名='英语' and c.成绩>75)
相似回答