我想根據他獲得的分數來計算每個學生的排名。但是,如果標記處於-ve值,則查詢不會顯示適當的答案。自加入sql生成排名
SELECT a1.ResultByTestId, a1.ObtainedMarks, COUNT(a2.ObtainedMarks) Rank
FROM ResultByTest a1, ResultByTest a2
WHERE a1.ObtainedMarks < a2.ObtainedMarks
or
(a1.ObtainedMarks=a2.ObtainedMarks and a1.StudentId = a2.StudentId)
GROUP BY a1.ObtainedMarks, a1.ResultByTestId
ORDER BY a1.ObtainedMarks DESC, Rank DESC
,並回答表是: -
resutlByTestId ObtainedMarks Rank
11 36 1
10 22 2
3 9 3
9 7 4
6 5 5
8 3 6
7 2 7
4 0 8
5 0 8
1 0 8
2 0 8
13 -5 12
有沒有人幫我嗎?
您的幫助,但我想排名9的標記是-5。 – mitali
然後只是改變你的查詢'COUNT(DISTINCT a2.ObtainedMarks)' – valex
非常感謝你。但是你可以告訴我,如果我想通過使用Rank()函數來計算排名,那你建議我。 – mitali