跳至主要內容
Workday User Guide
上次更新時間 :2023-06-23
位階

位階

說明

RANK
是一個視窗匯總函數,用於為群組中的每一列指派排名數字。如果多列具有相同的排名值 (存在並列),Workday 會將相同的排名值指派給並列的列,並略過後續的排名位置。
PARTITION BY
子句決定要使用哪些欄位來將一組輸入列分組。
ORDER BY
子句決定在排名前如何排序分區中的列。
Workday 會根據分區欄位將輸入列分組,根據排序欄位對列進行排序,然後計算每個群組中的匯總運算式 (此函數的排名)。各群組中的排名列從 1 開始。

語法

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

傳回值

傳回值類型
Integer

輸入參數

OVER()
必填。
OVER
必須在以下範圍內使用
RANK
運算式。
PARTITION
BYpartitioning_field
必填。使用
PARTITION BY
子句,指定一或多個欄位,用於對一組輸入列進行分區。您可以指定「貨幣」以外的任何欄位類型。例如,如果您將「月份」欄位指定為分區欄位,Workday 會將「月份」值相同的所有記錄分組歸為單一分區。
ORDER BY
ordering_field
必填。使用
ORDER BY
子句,使用每個分區內的指定欄位值,指定如何排序分區中的輸入列。您可以指定「貨幣」以外的任何欄位類型。
您可以使用
DESC
ASC
關鍵字︰依每個排序欄位的遞減順序 (高到低,NULL 在最後) 或遞增順序 (低到高,NULL 在前) 進行排序。如果您未為排序欄位指定排序順序,Workday 會自動按遞增順序對列進行排序。

範例

範例︰您有一個包含以下列和欄位的資料集。
正職員工
銷售日期
銷售
Goh
12/31/2018
140
Goh
11/30/2018
60
Goh
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
您可以將每位正職員工的銷售額按遞減順序排列,因此最高銷售額的排名為 1。請在
「依正職員工排名銷售」
欄位中使用此運算式︰
RANK() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
您會得到以下結果︰
正職員工
銷售日期
銷售
銷售排名 - 依正職員工
Goh
12/31/2018
140
1
Goh
10/31/2018
140
1
Goh
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
您也可以按降序排列每個日期的銷售額,因此最高銷售額的排名為 1。請在
「依日期排名銷售」
欄位中使用此運算式︰
RANK() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
您會得到以下結果︰
正職員工
銷售日期
銷售
依日期對銷售額進行排名
弗里曼
12/31/2018
160
1
Goh
12/31/2018
140
2
斯密
12/31/2018
140
2
Goh
11/30/2018
60
1
弗里曼
11/30/2018
60
1
斯密
11/30/2018
60
1
Goh
10/31/2018
140
1
斯密
10/31/2018
120
2
弗里曼
10/31/2018
110
3
請注意,並列值會被賦予相同的位階編號,且會略過下一個位階位置。