2009-07-24 28 views
1

遇到麻煩試圖排名我們每一個學生,通過他們在家庭組。需要幫助試圖用GROUP排名BY

例假數據。

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 ..如果我運行此針對單個家庭組(如工作正常。家庭組= 1)...但我不知道如何做到這一點在所有的家庭組。

我猜我需要一個更新查詢,它有一個子查詢......並且這個子查詢有它自己的子查詢......?

我很困惑:(我一直在想邪惡的遊戲,我拒絕使用,除非我有一把槍我的頭(因爲我相信它可以正確處理與'設置'符號)

回答

1

要獲得在球隊每個學生的DENSE_RANK:

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

是我不明白你想要的UPDATE雖然什麼

+0

完美PARTITION是「分組」的機制我所需要的。更新將是一個簡單的UPDATE查詢,其中包含上面的select語句u建議。簡單.wikid! – 2009-07-24 01:28:41