我想在 oracle 数据库中生成包含百分比、排名标准和划分的标记表
Posted
技术标签:
【中文标题】我想在 oracle 数据库中生成包含百分比、排名标准和划分的标记表【英文标题】:I want to generate marksheet containing percentage, rank standard wise and division wise in oracle database 【发布时间】:2015-01-08 12:41:39 【问题描述】:这是我的专栏
create table exam_details(
Stud_id varchar2(50),
Stud_course_id Number,
Stud_div char,
Stud_Sub_id Number,
Stud_Marks Number,
Sub_total_Marks Number,
Exam_id Number,
Exam_date Date
);
db 的内容是
insert into exam_details values ('1A1',1,'A',1,55,100,1,'2-jan-2015');
insert into exam_details values ('1A1',1,'A',2,65,100,1,'3-jan-2015');
insert into exam_details values ('1A1',1,'A',3,72,100,1,'5-jan-2015');
insert into exam_details values ('1B1',1,'B',1,45,100,1,'2-jan-2015');
insert into exam_details values ('1B1',1,'B',2,65,100,1,'3-jan-2015');
insert into exam_details values ('1B1',1,'B',3,58,100,1,'5-jan-2015');
insert into exam_details values ('2A1',2,'A',1,75,100,1,'2-jan-2015');
insert into exam_details values ('2A1',2,'A',2,65,100,1,'3-jan-2015');
insert into exam_details values ('2A1',2,'A',3,82,100,1,'5-jan-2015');
我试过了,但我只得到结果
select stud_id,
RANK() OVER(ORDER BY stud_marks DESC) AS "Rank"
from exam_details;
【问题讨论】:
'2-jan-2015'
不是 date
,而是 string
文字。使用to_date
将其转换为date
,否则您的insert
语句将毫无用处。
谢谢,但我只关注除法标记和百分比标记,我在 oracle 10g 上试过
如果你不编辑你的插入语句,没有人可以使用你的测试用例。
Oracle 可能会为该特定字符串文字隐式转换为 DATE。
“百分比”是什么意思?
【参考方案1】:
也许这个:
select stud_id, Stud_div,
RANK() OVER(ORDER BY stud_marks DESC) AS Rank_all,
RANK() OVER(PARTITION BY Stud_div ORDER BY stud_marks DESC) AS Rank_div
from exam_details;
【讨论】:
我想生成包含学生排名和百分比的简单报告以上是关于我想在 oracle 数据库中生成包含百分比、排名标准和划分的标记表的主要内容,如果未能解决你的问题,请参考以下文章
如何在Oracle中生成一周的第一天,一周的最后一天和两个日期之间的周数
我想在批处理文件中生成一个介于 1 到 5 之间的数字 [重复]