メインコンテンツにスキップ
Workday User Guide
最終更新: 2023-06-23
ROW_NUMBER

ROW_NUMBER

説明

ROW_NUMBER
"" は、行をグループに分割し、フィールドで行を並べ替え、グループ内の各行に一意の連番 (グループ内の最初の行に対する 1 から開始) を割り当てるウィンドウ集計関数です。
ROW_NUMBER
は、常にグループ内の各行に一意の値を割り当てます。以下を使用できます:
ROW_NUMBER
を使用して、データセットの行ごとに一意の ID を作成します。
次の基準
PARTITION BY
句は、入力行のセットをグループに分割するために使用するフィールドを決定します。
次の基準
ORDER BY
句は、連番が割り当てられる前に、分割内の行を並べ替える方法を決定します。
Workday は、分割フィールドに基づいて入力行をグループに分割し、順序付けフィールドに従って行を並べ替え、各グループについて集計式 (この関数の行番号) を計算します。各グループの番号付き行は 1 から始まります。

構文

ROW_NUMBER
()
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]] )

戻り値

型の値を返します
INTEGER

入力パラメータ

OVER()
必須のコンテンツ。
OVER
"" 内で使用する必要があります
ROW_NUMBER
PARTITION BY
department_field
必須のコンテンツ。使用先
PARTITION BY
句: 入力行のグループを分割するために使用する 1 つ以上のフィールドを指定します。"通貨" を除く任意のフィールド タイプを指定できます。例: "月" フィールドを分割フィールドとして指定すると、"月" の値が同じすべてのレコードが 1 つの分割にグループ化されます。
ORDER BY
ordering_field
必須のコンテンツ。使用先
ORDER BY
句。各分割内の指定されたフィールドの値を使用して、分割内の入力行を並べ替える方法を指定します。"通貨" を除く任意のフィールド タイプを指定できます。
次の操作ができます。
DESC
または
ASC
各順序フィールドを、降順 (値が高い順、NULL が最後になる) または昇順 (値が高い順、NULL が最初) でソートするキーワード。順序フィールドのソート順序を指定しない場合、行は自動的に昇順でソートされます。

例: これらの行とフィールドを含むデータセットがあります。
社員
販売日
Sales
ゴホ
12/31/2018
140
ゴホ
11/30/2018
60
ゴホ
10/31/2018
140
フリーマン
12/31/2018
160
フリーマン
11/30/2018
60
フリーマン
10/31/2018
110
セキュリティ
12/31/2018
140
セキュリティ
11/30/2018
60
セキュリティ
10/31/2018
120
各社員の売上に一意の ID を降順で割り当てることができます。これにより、最も売上が高いデータに 1 のランキングが付けられます。
"Sales Num by Employee"
フィールドで、次の式を使用します。
ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
以下の結果が得られます。
社員
販売日
Sales
社員別の売上数値
ゴホ
12/31/2018
140
1
ゴホ
10/31/2018
140
2
ゴホ
11/30/2018
60
3
フリーマン
12/31/2018
160
1
フリーマン
10/31/2018
110
2
フリーマン
11/30/2018
60
3
セキュリティ
12/31/2018
140
1
セキュリティ
10/31/2018
120
2
セキュリティ
11/30/2018
60
3
各日付の売上に一意の ID を降順で割り当てることもできます。これにより、最大の売上に 1 のランキングが付けられます。
"Sales Num by Date"
フィールドで、次の式を使用します。
ROW_NUMBER() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
以下の結果が得られます。
社員
販売日
Sales
日別の売上数値
フリーマン
12/31/2018
160
1
ゴホ
12/31/2018
140
2
セキュリティ
12/31/2018
140
3
ゴホ
11/30/2018
60
1
フリーマン
11/30/2018
60
2
セキュリティ
11/30/2018
60
3
ゴホ
10/31/2018
140
1
セキュリティ
10/31/2018
120
2
フリーマン
10/31/2018
110
3
使用することもできます。
ROW_NUMBER
ID ごとに複数の行を含むデータセットに含まれるすべての行の最新バージョンを決定するために使用します。このシナリオでは、データセットには、その行の情報が最新になった日付になった日付を表す日付フィールドが必要になります。データ ウェアハウスの概念に精通している場合、これはタイプ 2 の時間次変更属性テーブルです。これらの行とフィールドを含むデータセットがあります。
ID
名称
地域
有効日
G1
グールド語
West
01/01/2015
H1
ハリス
West
01/01/2015
G1
グールド語
09/01/2016
H1
ハリス
01/03/2017
H1
ハリス
国内電話番号
01/20/2021
各 ID の最新バージョンに値 1 を割り当てるには、
"最新バージョン"
フィールドで次の式を使用します。
ROW_NUMBER() OVER( PARTITION BY [ID] ORDER BY [Effective Date] DESC)
以下の結果が得られます。
ID
名称
地域
有効日
最新バージョン
G1
グールド語
West
01/01/2015
2
H1
ハリス
West
01/01/2015
3
G1
グールド語
09/01/2016
1
H1
ハリス
01/03/2017
2
H1
ハリス
国内電話番号
01/20/2021
1
"フィルタ ステージ" を使用して
"最新バージョン"
でフィルタすると、各 ID に対して最新の行のみが返されます。