2011-06-23 19 views
-1

クラスの各セクションからトップ10の学生(最大スコア500)を探す必要があります。ネストされたsqlグループ

例:

Section Name Total Score 

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

    B Henrik 499 
    B John 498 
     ...upto 10 

は、2つのテーブルの学生とクラスを持って言うことができます。

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; 

おかげで、

ジェフリー・ケビンPRY

+0

score_rankは派生列ではなくmyTableの定義済み列ではないため、クエリはエラーで失敗します。 where節を使用せずにインラインクエリ/ビューとしてクエリを作成し、既にRANKを使用している場合はGROUP BY句を削除してください。 – Chandu

+0

Jeffrey:今はきれいです。+1 – Chandu

+0

ありがとう。アイデアは私のために働く:) – ErAB

関連する問題