我想在 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 数据库中生成包含百分比、排名标准和划分的标记表的主要内容,如果未能解决你的问题,请参考以下文章

使用 MySQL,如何在表中生成包含记录索引的列?

在表中生成 10,000 个随机值

如何在Oracle中生成一周的第一天,一周的最后一天和两个日期之间的周数

我想在批处理文件中生成一个介于 1 到 5 之间的数字 [重复]

在 Visual Studio Community 2019 中生成包含文件的图表

在 Oracle SQL 中生成动态列值