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

MAX

說明

MAX
是一個視窗匯總函數,用於將列分組、依欄位對列進行排序,並傳回群組中的最大值 (最大值)。
PARTITION BY
子句決定要使用哪些欄位來將一組輸入列分組。該
ORDER BY
子句決定如何排序分區中的列。
Workday 會根據分區欄位將輸入列分組,根據排序欄位對列進行排序,然後計算每個群組中的匯總運算式 (此函數的最大值)。

語法

MAX
(
input_field
)
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]]
RANGE
BETWEEN
value
PRECEDING
AND
CURRENT ROW
|
ROWS
win_boundary
|
BETWEEN
win_boundary
AND
win_boundary
)
where
win_boundary
can be:
UNBOUNDED PRECEDING
value
PRECEDING
UNBOUNDED FOLLOWING
value
FOLLOWING
CURRENT ROW

傳回值

傳回值與輸入值的欄位類型相同。

輸入參數

input_field
必填。要執行匯總函數的欄位。您可以使用任何數值欄位或貨幣欄位。
OVER()
必填。
OVER
必須在以下範圍內使用
MAX
運算式。
PARTITION
BYpartitioning_field
必填。使用
PARTITION BY
子句,指定一或多個欄位,用於對一組輸入列進行分區。您可以指定「貨幣」以外的任何欄位類型。例如,如果您將「月份」欄位指定為分區欄位,Workday 會將月份值相同的所有記錄分組歸入單一分區。
ORDER BY
ordering_field
必填。使用
ORDER BY
子句,使用每個分區內的指定欄位值,指定如何排序分區中的輸入列。您可以指定「貨幣」以外的任何欄位類型。但是,當您使用
RANGE
子句。
您可以使用
DESC
ASC
關鍵字︰依每個排序欄位的遞減順序 (高到低,NULL 在最後) 或遞增順序 (低到高,NULL 在前) 進行排序。如果您未為排序欄位指定排序順序,Workday 會自動按遞增順序對列進行排序。
ROWS | 列範圍
必填。該
ROWS
RANGE
子句透過指定視窗框架來定義分區內的特定列數 (相對於目前列)。透過指定分區內的起點和結束點 (稱為視窗邊界),您可以定義視窗框架。「視窗框架」是每個分區中要計算匯總運算式 (此函數的最大值) 的一組輸入列。視窗框架可以包含分區的一列、多列或所有列。
兩者
ROWS
RANGE
指定相對於目前列的列範圍,但
RANGE
對值進行邏輯運算 (邏輯關聯),且
ROWS
對資料集中的列進行實際操作 (實際關聯)。
RANGE
將視窗框架限制為包含值在指定範圍內的列 (相對於目前的值)。
ROWS
會將視窗框架限制為包含實際與目前列相鄰的列。
使用
RANGE
以定義絕對時段邊界,例如過去 3 個月或年初迄今。當您使用
RANGE
ORDER BY
子句必須使用數值欄位類型,例如整數或數值。
範例︰假設您有一個名為 MonthNum 的整數欄位,表示一年中的月份編號 (值 1 到 12)。若要指定過去 3 個月的所有值,請依 MonthNum 進行排序,並使用
RANGE BETWEEN 2 PRECEDING AND CURRENT ROW
。此 RANGE 子句包含目前月份和前 2 個月,總計 3 個月。
當您使用發布包含視窗函數的資料集時
RANGE
,視窗中的列數不可超過 1000。如果特定時段超過 1000 列,發布作業就會失敗。
win_boundary
必填。視窗邊界定義了視窗框架的開始點和結束點。視窗邊界是以目前列為基準。
A
PRECEDING
子句定義的視窗邊界小於目前列 (目前列之前要包含的列數)。該
FOLLOWING
子句定義的視窗邊界大於目前列 (目前列之後包含的列數)。
如果您只指定一個視窗邊界,Workday 會使用目前列做為視窗框架中的另一個邊界 (上限或下限,取決於運算式語法)。該
UNBOUNDED
關鍵字包含指定方向上的所有列。當您需要指定視窗框架的開始和結束位置時,請使用
BETWEEN
AND
關鍵字。
指定特定列數時,該
不可超過 100。
範例︰
ROWS 2 PRECEDING
表示視窗大小為 3 列,從前面的 2 列開始,直到 (包括目前) 列。
範例︰
ROWS UNBOUNDED FOLLOWING
表示視窗從目前列開始,並包含目前列和目前列之後的所有列。

範例

範例︰您有一個包含以下列和欄位的資料集。
督導組織
名稱
薪酬變更
行銷
2019-Q1
Goh
2000.00
行銷
2019-Q1
弗里曼
1000.00
行銷
2019-Q1
斯密
2500.00
諮詢
2019-Q1
戈麥斯
5000.00
諮詢
2019-Q1
木村
3000.00
諮詢
2019-Q1
費茲
3500.00
諮詢
2019-Q2
戈麥斯
0
諮詢
2019-Q2
木村
2000.00
諮詢
2019-Q2
費茲
1500.00
您可以計算每個督導組織每季的最高薪酬變動 (
「薪酬變更」
欄位)。
為確保 Workday 為分區中的每一列傳回相同的值,請依與輸入欄位相同的欄位,依遞減 (
DESC
) 順序對列進行排序,以便在每個分區中最先出現薪酬變更。
請在
「最大薪酬變更」
欄位中使用此運算式︰
MAX([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
您會得到以下結果︰
督導組織
名稱
薪酬變更
薪酬變更上限
諮詢
2019-Q1
戈麥斯
5000.00
5000.00
諮詢
2019-Q1
費茲
3500.00
5000.00
諮詢
2019-Q1
木村
3000.00
5000.00
諮詢
2019-Q2
木村
2000.00
2000.00
諮詢
2019-Q2
費茲
1500.00
2000.00
諮詢
2019-Q2
戈麥斯
0
2000.00
行銷
2019-Q1
斯密
2500.00
2500.00
行銷
2019-Q1
Goh
2000.00
2500.00
行銷
2019-Q1
弗里曼
1000.00
2500.00