2010-12-15 5 views
0

2つの列(student_id、grade)を持つ1つの表があるとします。固定数の範囲でグループ化するにはどうすればよいですか?

student_idは整数で、gradeは10進数です。

私は1000人の学生がいて、10人ずつのグループでグレード別にグループ化したい場合は、

これは100個のグループを生成するはずです。最初のグループは10の最高の成績を示し、最後のグループは10の最低成績を含む。

どうすればよいですか? 最適化はいつでも歓迎します。

ありがとうございました。

ジョアン

+0

sqlタグが指定されている場合、タイトルに[SQL]は必要ありません。 – Donnie

+0

あなたの質問に一貫性がありません。 10種類の成績はないかもしれません。あなたはおそらく、「最初のグループは10人の最高の学生を結婚させ、最後のグループには10人の最も低い学生がいる」ということを意味しますか? ??そうすれば、同じ学年の学生のグループが学生の数に基づいてグループの境界を越える(交差する)可能性があるため、可能ではない可能性があることを認識します。 –

+0

チャールズ、最初のグループには、最高10の成績とそれぞれの成績を持つ学生のIDが含まれています。最大13の成績がある場合、第1のグループには10個、第2のグループには3個の成績が必要です。 – joaoavf

答えて

1

ntileバケットの量によって順位を与えます。

select student_id, ntile(100) over (order by grade desc) from student 
関連する問題