-3

我需要根据学生在 sql server 中的分数给他们排名。如果学生得 0 分,那么排名应该是 0 或 -。但是当我使用dense_rank()函数时,排名的顺序从0开始而不是从1开始。任何人都可以帮助我进行示例查询。

提前致谢。

4

2 回答 2

1

这不是真的。

DENSE_RANK (Transact-SQL)

行的排名是相关行之前的不同排名数的加一。

这意味着第一行将是 0+1=>1,而不是您所说的 0。

这也可以从

SQL 小提琴演示

于 2013-03-23T12:45:49.350 回答
1

你是这个意思吗?

select 
    (case when marks=0 then 0 else DENSE_RANK() over (order by marks desc) end) RNK, 
    marks,
    student
from(
    select 5 as marks, 'a' student union
    select 5 as marks, 'b' student union
    select 0 as marks, 'c' student union
    select 1 as marks, 'd' student union
    select 1 as marks, 'e' student union
    select 3 as marks, 'f' student 
)x
--order by RNK --Add order by clause if 0th rank to come first.
于 2013-03-23T12:49:02.740 回答