1、 成绩表(CJB)
课程号(kch) 课程名(kcm) 学号(xh) 学分(xf) 学时(xs) 课程属性(kcsx) 考试成绩(kscj)
2、学籍表(XJB)
学号(XH) 姓名(XM) 性别(XB) 系所号(XSH) 专业方向(ZYFX) 班名(BM) 所属年级(SSNJ)
3、系所表(XSB)
系所号(XSH) 系所名(XSM)
4、学分绩点(XFJ)
绩点号(JDH) 绩点数(JDS) 下限分(XXF) 上限分(SXF)
JDH JDS XXF SXF BZ
--- --------- --------- --------- --------------
1 4 90 100 A(优)
2 3.7 87 89.9 A-
3 3.3 84 86.9 B+
4 3 81 83.9 B(良)
5 2.7 78 80.9 B-
6 2.3 75 77.9 C+
7 2 72 74.9 C(中)
8 1.7 69 71.9 C-
9 1.3 66 68.9 D+
10 1 60 65.9 D
12 0 0 59.9 F(不及格)
如何用sql语句生成如下的形式呢?
系别 学号 性别 专业 层次 必修课学分 限选课学分 任选课学分(通识、复合) 任选课学分(教育类) 重修课程门次 重修课程学分 平均学分绩点
注:任选课(通识、复合)课程名里都有“复合”二字 ,任选课(教育类)课程号前面是"JY"
平均绩点计算方式为:每门课程绩点*学分/总学分
课程号(kch) 课程名(kcm) 学号(xh) 学分(xf) 学时(xs) 课程属性(kcsx) 考试成绩(kscj)
2、学籍表(XJB)
学号(XH) 姓名(XM) 性别(XB) 系所号(XSH) 专业方向(ZYFX) 班名(BM) 所属年级(SSNJ)
3、系所表(XSB)
系所号(XSH) 系所名(XSM)
4、学分绩点(XFJ)
绩点号(JDH) 绩点数(JDS) 下限分(XXF) 上限分(SXF)
JDH JDS XXF SXF BZ
--- --------- --------- --------- --------------
1 4 90 100 A(优)
2 3.7 87 89.9 A-
3 3.3 84 86.9 B+
4 3 81 83.9 B(良)
5 2.7 78 80.9 B-
6 2.3 75 77.9 C+
7 2 72 74.9 C(中)
8 1.7 69 71.9 C-
9 1.3 66 68.9 D+
10 1 60 65.9 D
12 0 0 59.9 F(不及格)
如何用sql语句生成如下的形式呢?
系别 学号 性别 专业 层次 必修课学分 限选课学分 任选课学分(通识、复合) 任选课学分(教育类) 重修课程门次 重修课程学分 平均学分绩点
注:任选课(通识、复合)课程名里都有“复合”二字 ,任选课(教育类)课程号前面是"JY"
平均绩点计算方式为:每门课程绩点*学分/总学分
解决方案 »
- Oracle如果设置当天的某个时间
- 请教一条快速准确的oracle查询语句
- 急急...登陆OMS后,打开数据库失败
- 请问如何导出 oracle 数据库中某个 owner 所属的所有的 package 以及 package 内容
- cman(connect manager)连接管理器不能用?
- Oracle 结果集缓存如何去掉这个功能?
- 有原先数据库中的几个dbf文件,如果恢复数据库?
- 求救,请大侠执教,忘记了进入sqlplus的用户名和密码怎么办,oracle中有哪个文件保存这个信息?
- 存储过程中声明二维数组实现,入参是一条记录(可能有语病),出参是整个一个结果集
- 我是新手,有个问题请教一下!!!!!!!!!!!!!!!
- oracle如何入门?
- 如何在红旗5.0上安装oracle 10g
select XSB.XSM as 系别,XJB.XH as 学号,XJB.XB as 性别,XJB.ZYFX as 专业,
sum(case when instr(x.kcm,'复合')!=-1 then x.JDS else 0 end ) as 任选课学分(通识、复合),
sum(case when instr(x.kch,'JY')!=-1 then x.JDS else 0 end ) as 任选课学分(教育类),
x.JDS*xf/sum(xf) as 平均学分绩点
from XSB ,XJB,(select CJB.kcm,CJB.kscj,CJB.xf,max(JDS) as JDS from CJB,XFJ where CJB.kscj>=XFJ.XXF and CJB.kscj<=SXF group by CJB.kcm,CJB.kscj,CJB.xf) x
where XSB.XSH = XJB.XSH and XJB.XH = CJB.XH
group by XSB.XSM ,XJB.XH,XJB.XB ,XJB.ZYFX
你的 层次 必修课学分 限选课学分 重修课程门次 重修课程学分
这几个怎么区分的啊?
还有就是成绩表里还有一个重修,补考标志字段(CXBKBZ)成绩表(CJB)结构列名 可空值否 类型 备注
------------------------------- -------- ----
KCH NOT NULL VARCHAR2(10) 课程号
KCM VARCHAR2(50) 课程名
KXH NUMBER(4) 课序号
XH NOT NULL VARCHAR2(12) 学号
XNXQ VARCHAR2(11) 学年学期
XF NUMBER(5,1) 学分
XS NUMBER(4,1) 学时数
KCSX VARCHAR2(4) 课程属性
KSCJ NUMBER(5,1) 考试成绩
CXBKBZ VARCHAR2(4) 成绩补考备注(补考,重修,辅修)...学籍表(XJB)结构:列名 可空值否 类型 备注
------------------------------- -------- ----
XH NOT NULL VARCHAR2(12) 学号
XM NOT NULL VARCHAR2(40) 姓名
XB VARCHAR2(2) 性别
XSH VARCHAR2(5) 系所号
ZYH VARCHAR2(8) 专业号
ZYFX VARCHAR2(30) 专业方向(专业名)
BM VARCHAR2(10) 班级名称
RXNJ VARCHAR2(4) 入学年级
SSNJ VARCHAR2(4) 所属年级
PYFS VARCHAR2(20) 培养方式(层次)
CXBKBZ VARCHAR2(4) 成绩补考备注(补考,重修,辅修)
...系所表(XSB)结构:列名 可空值否 类型 备注
------------------------------- -------- ----
XSH NOT NULL VARCHAR2(5) 系所号
XSM VARCHAR2(30) 系所名称学分绩点转化表(XFJ)结构: 列名 可空值否 类型
------------------------------- -------- ----
JDH NOT NULL NUMBER(2)
JDS NUMBER(2,1)
XXF NUMBER(5,1)
SXF NUMBER(5,1)
BZ VARCHAR2(20)
以下是XFJ内的数据(各课程成绩通过这张表转换):JDH JDS XXF SXF BZ
--- --------- --------- --------- --------------
1 4 90 100 A(优)
2 3.7 87 89.9 A-
3 3.3 84 86.9 B+
4 3 81 83.9 B(良)
5 2.7 78 80.9 B-
6 2.3 75 77.9 C+
7 2 72 74.9 C(中)
8 1.7 69 71.9 C-
9 1.3 66 68.9 D+
10 1 60 65.9 D
12 0 0 59.9 F(不及格) 如何用sql语句生成如下的形式呢?
系别 学号 性别 专业 培养层次 必修课学分 限选课学分 任选课学分(通识、复合) 任选课学分(教育类) 重修课程门次 重修课程学分 平均学分绩点
注:任选课(通识、复合)课程名里都有“复合”二字 ,任选课(教育类)课程号前面是"JY"
平均绩点计算方式为:每门课程绩点*学分/总学分
培养层次就是学籍表里培养方式字段里的值.解释:学分是根据教学计划制定出来的,每门课程的学分不一样,每门课程的绩点是根据成绩转化出来的,比如90-100是4,60以下没有绩点,就是这样.
先试下,有问题自己修改下,或者再说
select XSB.XSM as 系别,XJB.XH as 学号,XJB.XB as 性别,XJB.ZYFX as 专业,XJB.PYFS as 培养方式(层次),
sum(case when instr(x.kcm,'复合')!=-1 then x.JDS else 0 end ) as 任选课学分(通识、复合),
sum(case when instr(x.kch,'JY')!=-1 then x.JDS else 0 end ) as 任选课学分(教育类),
重修成绩,重修课程门次,
x.JDS*xf/sum(xf) as 平均学分绩点
from XSB ,XJB,
(select CJB.kcm,CJB.kscj,CJB.xf,count(decode(CJB.CXBKBZ,'重修',1,null)) as 重修课程门次,
sum(decode(CJB.CXBKBZ,'重修',XFJ.JDS,0)) as 重修成绩,max(XFJ.JDS) as JDS
from CJB,XFJ where CJB.kscj> =XFJ.XXF and CJB.kscj <=SXF group by CJB.kcm,CJB.kscj,CJB.xf) x
where XSB.XSH = XJB.XSH and XJB.XH = CJB.XH
group by XSB.XSM ,XJB.XH,XJB.XB ,XJB.ZYFX
sum(decode(CJB.CXBKBZ,'重修',XFJ.JDS,0)) as 重修成绩,max(XFJ.JDS) as JDS
from CJB,XFJ where CJB.kscj> =XFJ.XXF and CJB.kscj <=SXF group by CJB.kcm,CJB.kscj,CJB.xf
这段是不是把成绩转化为绩点呢?这可以运行,可是整段运行总是说最后where XSB.XSH = XJB.XSH and XJB.XH = CJB.XH 中xjb.xh列名无效