oracle表示六月,【Oracle篇】六月笔记集合

--1、 完成查询如下表显示,显示全部学生的信息,按照学生编号的升序排列,对同一学号按照课程名称的字母顺序显示。

--学生编号 学生姓名 课程名称 成绩

select st.studno,st.studname,

sum(decode(cc.coursename,'JAVA',sc.grade,0)) "JAVA",

sum(decode(cc.coursename,'JSP',sc.grade,0)) "JSP",

sum(decode(cc.coursename,'Struts',sc.grade,0)) "Struts",

sum(decode(cc.coursename,'Oracle',sc.grade,0)) "Oracle",

sum(decode(cc.coursename,'Spring',sc.grade,0)) "Spring",

sum(decode(cc.coursename,'经济管理',sc.grade,0)) "经济管理",

sum(decode(cc.coursename,'国际商贸',sc.grade,0)) "国际商贸",

sum(decode(cc.coursename,'会计原理',sc.grade,0)) "会计原理",

sum(decode(cc.coursename,'外贸函电',sc.grade,0)) "外贸函电",

sum(decode(cc.coursename,'马克思主义原理',sc.grade,0)) "马克思主义原理"

from student st ,score sc,course cc where st.studno=sc.studno and cc.courseid=sc.courseid group by st.studno ,st.studname;

--2、查询显示单科最高成绩

--学生编号 学生姓名 课程名称 单科最高成绩

select st.studno,st.studname,s.s_k,cc.coursename

from (select s.studno sno,max(s.grade) over(partition by s.studno) s_k

from score s ) s ,score sc,student st,course cc

where sc.grade=s_k and s.sno=st.studno and cc.courseid=sc.courseid and st.studno=sc.studno;

--3、查询显示学生课程及格还是不及格

--学生编号 学生姓名 课程名称 考试通过状态

select st.studno,st.studname,cc.coursename,

case

when sc.grade>=60 then '及格'

else '不及格'

end "考试通过状态"

from student st ,score sc,course cc where st.studno=sc.studno and cc.courseid=sc.courseid;

--4、统计学生选科的数量

--学生编号 学生姓名 选课数量

select st.studno,st.studname,

count(coursename) over(partition by st.studno order by st.studname) course_count

from student st ,score sc,course cc where st.studno=sc.studno and cc.courseid=sc.courseid;

--5、查询单科成绩超过课程平均成绩的学生的信息,列出学生编号,学生姓名,课程名称和课程成绩

select st.studno,st.studname,cc.coursename,sc.grade

from student st ,score sc,course cc,(select avg(grade) gav,studno from score group by studno)avg_s

where st.studno=sc.studno and cc.courseid=sc.courseid and sc.grade>avg_s.gav group by st.studno,st.studname,cc.coursename,sc.grade;

-- 6、查询显示需要补考的学生的学生编号,学生姓名和课程名称

select st.studno,st.studname,cc.coursename

from student st ,score sc,course cc

where exists (select 1 from score s where s.grade<60)

and st.studno=sc.studno and cc.courseid=sc.courseid and sc.grade<60 group by st.studno,st.studname,cc.coursename,sc.grade;

--7、统计各科成绩平均分,显示课程编号,课程名称,平均分。

select avg(grade) avg_s,s.courseid from score s,course cc

where s.courseid=cc.courseid group by s.courseid;

--8、查询选修了java课程的学生信息

select st.*

from student st,course cc,score sc where st.studno=sc.studno and cc.courseid=sc.courseid and cc.coursename='JAVA';

--9、查询没有选修JAVA课程的学生信息

select st.*

from student st,course cc,score sc where st.studno=sc.studno and cc.courseid=sc.courseid and cc.coursename!='JAVA';

--10、查询选修了教师李可课程的学生信息

select st.*

from student st,teacherinfo tt,courseplan cp where st.studno=cp.studno and tt.teachid=cp.teachid and tt.teachname='李可';

--11、查询同时选修了A01和A02这两门课的学生的上课安排,显示学生编号,学生姓名、班级编号、课程编号、授课教师、上课日期

select all_stu.*,st.studno from (

select st.studno sno,st.studname,st.batchcode,cp.courseid,tt.teachname,cp.coursedt

from student st,teacherinfo tt,courseplan cp where

st.studno=cp.studno

and

cp.courseid='A02'

union

select st.studno sno,st.studname,st.batchcode,cp.courseid,tt.teachname,cp.coursedt

from student st,teacherinfo tt,courseplan cp where

st.studno=cp.studno

and

cp.courseid='A01') all_stu,student st

where st.studno=all_stu.sno order by st.studno;

--12、查询96571班都有哪些课程,在什么时间有哪位教师授课

select tt.teachname,cp.coursedt,cc.coursename

from teacherinfo tt,courseplan cp,course cc,student st where st.batchcode='96571' and st.studno=cp.studno and tt.teachid=cp.teachid;

--13、查询周一不上课的班级

select st.batchcode,cp.coursedt

from teacherinfo tt,courseplan cp,course cc,student st where cp.coursedt!='周一' and st.studno=cp.studno and tt.teachid=cp.teachid;

--14、查询周四上课的教师姓名

select cp.coursedt,tt.teachname

from teacherinfo tt,courseplan cp

where cp.coursedt='周四' and tt.teachid=cp.teachid;

--15、查询A02课程的授课教师和上课时间

select cc.coursename,tt.teachname,cp.coursedt

from teacherinfo tt,courseplan cp,course cc where cp.courseid='A02'

and tt.teachid=cp.teachid order by cp.courseid;

--16、统计各个科目不及格人数占这个科目考生人数的百分比

select count(*)

from student st,

select round((no_grade.n_g/all_grade.a_g)*100,2)||'%' geade_perce,cc.coursename,st.studno

from (select count(*) n_g,cc.coursename from score sc,course cc,student st

where grade<60 and sc.courseid=cc.courseid and st.studno=sc.studno group by cc.coursename) no_grade,

(select count(*) a_g,cc.coursename from score sc,course cc,student st

where sc.courseid=cc.courseid and st.studno=sc.studno) all_grade,score sc,course cc,student st where sc.courseid=cc.courseid and st.studno=sc.studno;

--17、统计所有不及格人数占考生总数的百分比

select round((no_grade.n_g/all_grade.a_g)*100,2)||'%' geade_perce

from (select count(*) n_g from score sc,course cc

where grade<60 and sc.courseid=cc.courseid ) no_grade,(select count(*) a_g from score sc,course cc

where sc.courseid=cc.courseid ) all_grade;

--18、查询单科成绩在90分以上的学生是哪个班级的,授课教师是谁?

select cp.courseid,tt.teachname

from student st,courseplan cp,teacherinfo tt,score sc

where sc.grade>90 and st.studno=sc.studno and cp.courseid=sc.courseid and tt.teachid=cp.teachid;

--19、查询工业工程班的授课教师都是谁?

select tt.teachname,bb.batchname

from courseplan cp,teacherinfo tt,student st,bbatch bb

where bb.batchname like '%工业工程%'

and tt.teachid=cp.teachid and st.batchcode=bb.batchcode;

--20、查询1068号学生在什么时间都有课?

select cp.coursedt

from courseplan cp,teacherinfo tt,student st,bbatch bb

where st.studno=1058 and tt.teachid=cp.teachid and st.batchcode=bb.batchcode;

--21、查询哪些同学的考试成绩都在90分以上

select st.studname

from courseplan cp,teacherinfo tt,student st,bbatch bb,score sc

where sc.grade>90 and tt.teachid=cp.teachid and st.batchcode=bb.batchcode group by st.studname;

--22、查询同时代课超过两门课程的教师

select tt.teachname

from courseplan cp,teacherinfo tt,student st,bbatch bb,score sc

where (select count(cc.coursename) from courseplan cp,teacherinfo tt,course cc

where tt.teachid=cp.teachid and cc.courseid=cp.courseid)>2

and tt.teachid=cp.teachid and st.batchcode=bb.batchcode group by tt.teachname;

--23、汇总各个学生考试成绩的总分,并排名次。显示学生编号,学生姓名,班级编号,总分

-------------------------

select * from (

select DENSE_RANK() over(order by all_grade.sum_grade desc) rk,all_grade.*

from

(select sum(sc.grade) sum_grade,st.studno sno,st.studname sna,st.batchcode sba,bb.batchname

from student st,score sc,bbatch bb

where bb.batchcode=st.batchcode and st.studno=sc.studno group by st.studno,st.studname,st.batchcode,bb.batchname

order by st.studno,sum_grade desc

)all_grade,student st where st.batchcode=all_grade.sba

)

where rk<=10 ;

--------------------------

--24、按照班级分组,显示学生的编号,学生姓名和总分,在一个班级内按照总分排名

select * from (

select DENSE_RANK() over(partition by all_grade.sba order by all_grade.sum_grade desc) rk,all_grade.*

from

(select sum(sc.grade) sum_grade,st.studno sno,st.studname sna,st.batchcode sba,bb.batchname

from student st,score sc,bbatch bb

where bb.batchcode=st.batchcode and st.studno=sc.studno group by st.studno,st.studname,st.batchcode,bb.batchname

order by st.studno,sum_grade desc

)all_grade,student st where st.batchcode=all_grade.sba

)

where rk<=3;

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值