每个部分SQL Developer的前3个最高分数

时间:2015-04-27 13:13:06

标签: oracle

我查看了与此相关的其他问题,但它没有用。我甚至玩过Dense_Rank并且仍然无法得到正确答案。

使用Oracle学生计划数据。我试图根据两个表格找到每个部分的最高3个等级(不是每个部分的前3行)。 这基于Student计划中的GradeStudent表格 我使用的是Oracle Developer 10,它看起来不像LIMIT函数。因为它给了我错误

  

缺少右括号

select 
g.SECTION_ID,g.NUMERIC_GRADE, s.First_Name,s.Last_Name
from GRADE g Join Student s
On g.student_ID = s.student_ID
and Grade_Type_Code='MT'
Where numeric_grade in(Select distinct numeric_grade
from grade 
order by numeric_grade desc limit 3);

2 个答案:

答案 0 :(得分:0)

您可以在Oracle中使用ROWNUM:

myApp.directive("myDirective", ["$compile",function($compile){

    var template = '<my-directive ng-repeat="child in item.items" ng-model="child"></my-directive>';

    return{
        templateUrl: "myDirective.html",
        replace: true,
        transclude: true,
        scope: {
            item: "=ngModel"    
        },
        link: function(scope, element){                     
            var compiled = $compile(template)(scope);
            element.append(compiled);
        }
    }   
}]);

答案 1 :(得分:0)

使用dense_rank的解决方案:

select section_id, numeric_grade, first_name, last_name 
  from (
    select g.section_id, g.numeric_grade, s.First_Name,s.Last_Name,
        dense_rank() over (partition by g.section_id 
          order by g.numeric_grade desc) rnk
      from GRADE g 
        join Student s on g.student_ID = s.student_ID 
          and Grade_Type_Code='MT' )
  where rnk < 4
  order by section_id, numeric_grade desc

SQLFiddle demo