MIN
說明
MIN
是一個視窗匯總函數,用於將列分組、依欄位對列進行排序,並傳回群組中的最小 (最低) 值。該
PARTITION BY
子句決定要使用哪些欄位來將一組輸入列分組。該 ORDER BY
子句決定如何排序分區中的列。Workday 會根據分區欄位將輸入列分組,根據排序欄位對列進行排序,然後計算每個群組中的匯總運算式 (此函數的最小值)。
語法
whereMIN(input_field)OVER(PARTITION BYpartitioning_field[,partitioning_field]ORDER BYordering_field[ASC | DESC] [,ordering_field[ASC | DESC]]RANGEBETWEENvaluePRECEDINGANDCURRENT ROW|ROWSwin_boundary|BETWEENwin_boundaryANDwin_boundary)win_boundarycan be:UNBOUNDED PRECEDINGvaluePRECEDINGUNBOUNDED FOLLOWINGvalueFOLLOWINGCURRENT ROW
傳回值
傳回值與輸入值的欄位類型相同。
輸入參數
- input_field
- 必填。要執行匯總函數的欄位。您可以使用任何數值欄位或貨幣欄位。
- OVER()
- 必填。OVER必須在以下範圍內使用MIN運算式。
- PARTITIONBYpartitioning_field
- 必填。使用PARTITION BY子句,指定一或多個欄位,用於對一組輸入列進行分區。您可以指定「貨幣」以外的任何欄位類型。例如,如果您將「月份」欄位指定為分區欄位,Workday 會將月份值相同的所有記錄分組歸入單一分區。
- ORDER BYordering_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
- 必填。視窗邊界定義了視窗框架的開始點和結束點。視窗邊界是以目前列為基準。APRECEDING子句定義的視窗邊界小於目前列 (目前列之前要包含的列數)。該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 為分區中的每一列傳回相同的值,請依與輸入欄位相同的欄位,以遞增 (
ASC
) 的順序對列進行排序,以便在每個分區中優先顯示薪酬最低的變更。請在
「最低薪酬變更」
欄位中使用此運算式︰MIN([Comp Change]) OVER( PARTITION BY [Supervisory Org], [Quarter] ORDER BY [Comp Change] ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
您會得到以下結果︰
督導組織 | 季 | 名稱 | 薪酬變更 | 最低薪酬變更 |
|---|---|---|---|---|
諮詢 | 2019-Q1 | 木村 | 3000.00 | 3000.00 |
諮詢 | 2019-Q1 | 費茲 | 3500.00 | 3000.00 |
諮詢 | 2019-Q1 | 戈麥斯 | 5000.00 | 3000.00 |
諮詢 | 2019-Q2 | 戈麥斯 | 0 | 0 |
諮詢 | 2019-Q2 | 費茲 | 1500.00 | 0 |
諮詢 | 2019-Q2 | 木村 | 2000.00 | 0 |
行銷 | 2019-Q1 | 弗里曼 | 1000.00 | 1000.00 |
行銷 | 2019-Q1 | Goh | 2000.00 | 1000.00 |
行銷 | 2019-Q1 | 斯密 | 2500.00 | 1000.00 |