2011-06-23 61 views
-1

我們需要從每節課中找到TOP 10的學生(最高分數爲500)。嵌套的sql組

實施例:

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

後的表名稱和類的DDL ..從類 – Chandu

+0

選擇部分;從NAME中選擇姓名,主題,分數; – ErAB

+0

什麼字段將NAME和CLASS表結合在一起? – Chandu

回答

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; 

謝謝,

傑弗裏凱文撬

+0

該查詢會失敗並顯示錯誤,因爲score_rank不是myTable的定義列而是派生列。在不使用where子句的情況下作爲內聯查詢/視圖進行查詢,並刪除GROUP BY子句,因爲您使用的是RANK – Chandu

+0

Jeffrey:現在看起來很好.. +1 – Chandu

+0

謝謝。這個想法適用於我:) – ErAB