-3

SQL Server での成績に基づいて学生にランクを付ける必要があります。生徒が 0 点を取得した場合、ランクは 0 または - になります。しかし、dense_rank() 関数を使用すると、ランクの順序は 1 からではなく 0 から始まります。

前もって感謝します。

4

2 に答える 2

1

本当じゃない。

DENSE_RANK (Transact-SQL)から

行のランクは、問題の行の前にある個別のランクの数に 1 を加えたものです。

これは、最初の行が 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 に答える