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

COUNT 個

說明

COUNT
是一個視窗匯總函數,用於將列分組、依欄位對列進行排序,並傳回群組中有效列的總數 (NOT NULL)。您可以使用
COUNT
與其他函數一起計算累計匯總。
PARTITION BY
子句決定要使用哪些欄位來將一組輸入列分組。該
ORDER BY
子句決定如何排序分區中的列。
Workday 會根據分區欄位將輸入列分組,根據排序欄位對列進行排序,然後計算每個群組中的匯總運算式 (此函數的計數)。

語法

COUNT
(
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

傳回值

傳回值類型
LONG

輸入參數

input_field
必填。要執行匯總函數的欄位。您可以使用任何數值欄位或貨幣欄位。
OVER()
必填。
OVER
必須在
COUNT
運算式。
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
表示視窗從目前列開始,並包含目前列和目前列之後的所有列。

範例

您可以計算每位正職員工的移動銷售額計數 (連續計數或滾計計數)︰
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS UNBOUNDED PRECEDING)
無論 ORDER BY 子句中的欄位為何,您都可以計算分區中每一列的總銷售額︰
COUNT([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
您可以計算 12 個月的滾計計數︰
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)
Month
「」欄位必須為數值欄位類型,例如「整數」或「數值」。
您可以計算上年度迄今計數︰
COUNT([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Year] RANGE 1 PRECEDING)
Year
「」欄位必須為數值欄位類型,例如「整數」或「數值」。