1

生徒を所属するホームグループごとにランク付けするのに苦労しています。

偽のデータの例。

HomeGroup
1. Team RED
2. Team BLUE
3. Team Skeet
4. Team GREEN

Students
1. John, Score - 34, Team RED
2. Jill, Score - 87.3, Team RED
3. Fred, Score - 41, Team GREEN
4. Jane, Score 93, Team BLUE
...

私の出力は次のとおりです

Scores
StudentId 1, Score 34, Rank - 5th 
StudentId 2, Score 87.3, Rank - 1st 
StudentId 3, Score 41, Rank - 9th 
StudentId 4, Score 94, Rank - 1st.

DENSE_RANKを使用しようとしていますが、これをSINGLE HomeGroup(例:homegroup = 1)に対して実行すると正常に機能しますが、すべてのホームグループでこれを実行する方法がわかりません。

サブクエリを持つUpdateクエリが必要だと思います...そしてこのサブクエリには独自のサブクエリがあります...??

私はかなり混乱しています:(そして、頭に銃を持っていない限り、使用を拒否する邪悪なカーソルについて考え続けています(「集合」表記で正しく処理できると信じているため)。

4

1 に答える 1

1

チーム内の各学生のdense_rankを取得するには:

SELECT *, DENSE_RANK() OVER (PARTITION BY Team ORDER BY Score DESC)
   FROM Students;

しかし、何を更新したいのか私にはわかりません。

于 2009-07-24T00:50:05.663 に答える