SQL Server中row_number関数の一般的な使い方例詳細


一.SQL Server Row_number関数紹介
ROW_NUMBER()はWindow関数であり、結果セットのパーティションの各ラインに連続した整数を割り当てる。行番号は各パーティションの最初の行番号で始まります。
以下はROW_ですNUMBER()関数のシンタックスインスタンス:

select *,row_number() over(partition by column1 order by column2) as n from tablename
上の文法で:
  • PARTTION BY子文は結果セットをパーティションに分割します。ROW_NUMBER()関数は各パーティションに適用され、各パーティションの行番号を再初期化します。
  • PARTTION BY子文はオプションです。未指定の場合は、ROW_NUMBER()関数は、結果セット全体を単一のパーティションと見なします。
  • ORDER BYサブ句は、結果セットの各パーティションの行の論理順を定義する。ORDER BY子句は必要です。ROW_のために。NUMBER()関数は次数に敏感である。
  • 二.Row_number関数の具体的な使い方
    1.ロウウウを使うnumber()関数は、結果セットを番号付けします。
    
    select ROW_NUMBER() over(order by recordid ) as   ,* from [dbo].[Basal_Anormal_Solution] 
    
    実行結果:
     
     2.結果集を指定された列にグループ分けし、グループ内で指定された列に並べ替える(例えば、クラスの合計点をグループ別にグループ分けして表示し、グループ内で高得点から低得点まで並べ替える)
    
    select *,row_number() over(partition by createby order by actionOpeid) as n from [dbo].[Basal_Anormal_Solution]
    
    実行結果:

    3.結果集は指定された列によって重くなります。(例えば、学生の成績はグループごとにグループ分けして表示します。結果集は各グループの中で一番高い点数の学生だけを表示します。)
    
    select a.* from (select *,row_number() over(partition by createby order by actionOpeid) 
    as n from [dbo].[Basal_Anormal_Solution])as a where a.n<2
    
    実行結果:
     
    注意:私達が求めているのは1位の成績の時、rowを使ってはいけません。number()は、同じクラスが二つあったら並んで1位なので、row_number()は結果を一つだけ返します。この時はもう一つの関数、rank()とdense_を使います。rank()rank()とdense_rank()の違い:rank()はジャンプ順で、二番目がある時に次は四番目です。この時、私たちは通常、ランク関数を使って、柔軟に応用します。
    締め括りをつける
    以上でSQL Server中row_number関数のよくある使い方の文章はここまで紹介しました。もっと関連するSQL Server row_number関数の使い方の内容は私達の以前の文章を検索してください。または次の関連記事を見てください。これからもよろしくお願いします。