サーチ…


構文

  • DENSE_RANK()OVER([<partition_by_clause>] <order_by_clause>)
  • RANK()OVER([partition_by_clause] order_by_clause)

パラメーター

引数詳細
<partition_by_clause> FROM句で生成された結果セットを、 DENSE_RANK関数が適用されているパーティションに分割します。 PARTITION BY構文については、 OVER句(Transact-SQL)を参照してください。
<order_by_clause> パーティション内の行にDENSE_RANK関数が適用される順序を決定します。
OVER ( [ partition_by_clause ] order_by_clause) partition_by_clauseは、 FROM句によって生成された結果セットを、関数が適用されるパーティションに分割します。指定されていない場合、関数は照会結果セットのすべての行を単一のグループとして扱います。 order_by_clauseは、関数が適用される前のデータの順序を決定します。 order_by_clauseは必須です。 OVER句の<rows or range clause>RANK関数に指定できません。詳細については、 OVER句(Transact-SQL)を参照してください。

備考

2つ以上の行が同じパーティション内のランクを結んでいる場合、それぞれの連結された行は同じランクを受け取ります。たとえば、2人のトップセールスマンが同じSalesYTD値を持つ場合、それらは両方とも1ランクです。次にSalesYTDが高いセールス担当者は2位にランクされます。これは、この行の前に来る別個の行の数より1つ多いです。したがって、 DENSE_RANK関数によって返される数値にはギャップがなく、常に連続するランクがあります。

問合せ全体に使用されるソート順によって、結果に行が表示される順序が決まります。これは、ランク1の行がパーティション内の最初の行である必要はないことを意味します。

DENSE_RANKは非決定的です。詳細については、 確定的な関数と非決定的な関数を参照してください。

RANK()

A RANK()分割された列の結果セット内の各行のランクを返します。

例:

Select Studentid,Name,Subject,Marks,
RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name,subject

   Studentid    Name    Subject    Marks    Rank

    101         Ivan    Maths       70       2
    101         Ivan    Science     80       1
    101         Ivan    Social      60       3
    102         Ryan    Maths       60       2
    102         Ryan    Science     50       3
    102         Ryan    Social      70       1
    103         Tanvi   Maths       90       1
    103         Tanvi   Science     90       1
    103         Tanvi   Social      80       3

DENSE_RANK()

RANK()と同じです。ギャップなしのランクを返します。

Select  Studentid, Name,Subject,Marks,
DENSE_RANK() over(partition by name order by Marks desc)Rank
From Exam
order by name

Studentid    Name    Subject    Marks    Rank
101          Ivan    Science    80       1
101          Ivan    Maths      70       2
101          Ivan    Social     60       3
102          Ryan    Social     70       1
102          Ryan    Maths      60       2
102          Ryan    Science    50       3
103          Tanvi   Maths      90       1
103          Tanvi   Science    90       1
103          Tanvi   Social     80       2


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow