嵌套的sql组

时间:2011-06-23 15:10:57

标签: sql oracle10g

我们需要从课程的每个部分找到TOP 10学生(最高分500分)。

示例:

Section  Name   Total Score  

     A   Paul   499  
     A   Gustuv 498 
         ...upto top 10  

     B   Henrik  499  
     B   John   498   
         ...upto 10

假设它有两个表STUDENT和CLASS。

如何在oracle中使用sql以这种方式显示结果?

2 个答案:

答案 0 :(得分:1)

...试

我没有测试你的架构....但你应该能够得到一般的想法。

with rank_query as (
SELECT section, name, score,
       RANK() OVER (PARTITION BY section ORDER BY score) score_rank
FROM   myTable
)

select * from rank_query where score_rank <= 10;

谢谢,

Jeffrey Kevin Pry

答案 1 :(得分:0)

使用RANKDENSE_RANK(取决于“前10名”的意思)分析函数。

http://www.oracle-base.com/articles/misc/RankDenseRankFirstLastAnalyticFunctions.php