web-dev-qa-db-ja.com

ランク列を追加する方法は?

レコードを選択し、類似する各データのランク番号を決定したいと思います。

私のデータは以下の通りです。

MEMBER ID | LOAN AMOUNT 
1         | 2,000.00 
2         | 1,000.00 
3         | 4,000.00
4         | 1,000.00 

私が望んでいた結果を以下に示します。

RANK|MEMBER ID|LOAN AMOUNT 
1   |3        |4,000.00
2   |1        |2,000.00
3   |2        |1,000.00
3   |4        |1,000.00 

RANKは新しいコラムです。 MS SQL Server 2008を使用していて、次のようなビューテーブルを作成しましたが、目的の結果が得られません。

  select rank=count(*), s1.MemberID, s1.Loan_Amount 
   from (select MemberID, Loan_Amount from vwPrintTop20Borrowers) s1
   group by s1.MemberID, s1.LOAN_AMOUNT
     order by rank, s1.Loan_amount DESC

助けてください。ありがとう! :)

4
angel
SELECT ROW_NUMBER() 
        OVER (ORDER BY Loan_Amount DESC) AS Rank, 
    MemberID, LOAN_AMOUNT,
FROM vwPrintTop20Borrowers
0
Ankit

RANK()を使用するだけです:

_SELECT RANK() OVER(ORDER BY t.loan_amount DESC) as [rank],
       t.memeber_id,t.loan_amount
FROM YourTable t
_

これはギャップになりますが、例えば.

_RANK | AMOUNT
 1        10
 2         9
 3         8
 3         8
 5         7
_

これを回避するには、SQL-Server 2008+の場合、DENSE_RANK()を使用します

_DENSE_RANK() OVER(ORDER BY t.loan_amount DESC) as [rank]
_
7
sagi

以下のクエリを使用します。

Select Dense_Rank() OVER(ORDER BY [LOAN AMOUNT] DESC) as [Rank],[MEMBER ID],[LOAN AMOUNT]  
from YourTable
1
V A
   select * into #P from (
   select      1  as [MEMBER ID]        , 2000.00 as  [LOAN AMOUNT]  union   all
   select     2                      , 1000.00  union all
   select     3                         , 4000.00   union all
   select     4                         , 1000.00 
 )P


 select rank()over(  order by [LOAN AMOUNT] desc) as srno,[MEMBER ID],[LOAN AMOUNT] from #P

出力:

        srno    MEMBER ID   LOAN AMOUNT
           1          3     4000.00
           2          1     2000.00
           3          2     1000.00
           3          4     1000.00
1
Ramdeo angh