Sql 我想在oracle数据库中生成包含百分比、按标准排名和按部门排名的标记表

Sql 我想在oracle数据库中生成包含百分比、按标准排名和按部门排名的标记表,sql,oracle,analytic-functions,Sql,Oracle,Analytic Functions,这是我的专栏 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_

这是我的专栏

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
         );
数据库的内容是

        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');
我已经试过了,但我只得到了10分钟的结果

select stud_id, 
   RANK() OVER(ORDER BY stud_marks DESC) AS "Rank"
from exam_details;
也许这个:

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;

'2-jan-2015'
不是
日期
,而是
字符串
文字。使用
to_date
将其转换为
date
,否则您的
insert
语句将无效。谢谢,但我只关注按除法和按百分比标记,如果您不编辑insert语句,我会尝试使用oracle 10g,没有人能够使用您的测试用例。Oracle可能会对特定字符串文本执行到日期的隐式转换。您所说的“百分比”是什么意思?我想生成一个简单的报告,其中包含学生的排名和百分比