【问题标题】:I want to generate marksheet containing percentage, rank standard wise and division wise in oracle database我想在 oracle 数据库中生成包含百分比、排名标准和划分的标记表
【发布时间】: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。
  • “百分比”是什么意思?

标签: sql oracle analytic-functions


【解决方案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;

【讨论】:

  • 我想生成包含学生排名和百分比的简单报告
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多