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