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可能会对特定字符串文本执行到日期的隐式转换。您所说的“百分比”是什么意思?我想生成一个简单的报告,其中包含学生的排名和百分比