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"
平均绩点计算方式为:每门课程绩点*学分/总学分
解决方案 »
- 要流畅运行ORACLE10G需要什么样的硬件配置?
- SQL语句问题
- 有一道题a.time是时间字段 取表a的最近一周的最新的一条记录和表a的最近一周的最老的一条记录 各位 怎么算呀
- 求一个存储过程,非常感谢,很急
- 关于判断数据的递增或者递减
- oracle 安装的一个小问题。。。。。 在线等。。急。。。。。。。
- 求教:ORACLE 9i 出现ORA-01033: ORACLE initialization or shutdown in progress怎么解决?
- OIP-04116: Cursor not ready for I-O,这是什么错误
- 用代码实现魔方重拼?
- 关于大量数据的插入
- 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列名无效