彙總函式
彙總函式會在一組值上執行計算,並傳回值。 如此一來,就能夠產生多層級群組的摘要統計資料,而不需要額外負荷。
關於彙總函式
Windows 搜尋服務結構化查詢語言 (SQL) (SQL) 中的彙總函式具有下列語法:
AGGREGATE <function> [AS <label>] [,<function> [AS <label>]]*
函式部分可以包含下列任何函式和語法:
函式 | 描述 |
---|---|
AVG (< 資料行 >) | 傳回群組中的值的平均值。 僅適用于數位。 |
BYFREQUENCY (資料行 > N <>) < | 從群組中的結果傳回最常見的 N 個數據行值。 也包含每個值發生次數的計數,以及包含每個傳回值之結果的檔識別碼。 |
CHILDCOUNT () | 傳回群組中的專案數, (排除子群組) 。 如果有多個群組層級,這會傳回立即子群組的數目。 |
COUNT () | 傳回群組和所有子群組中的專案數目。 |
DATERANGE (< 資料行 >) | 傳回群組結果群組中找到之資料行值的下限和上限。 僅適用于 filetime 屬性。 |
FIRST (< 資料行 > , < N > 個) | 從群組中找到的分葉結果傳回前 N 個數據行值。 |
MAX (< 資料行 >) | 傳回運算式中的最大值。 僅適用于數位或日期。 |
MIN (< 資料行 >) | 傳回運算式中的最小值。 僅適用于數位或日期。 |
REPRESENTATIVEOF (< 資料行 > 、 < idRepresentative > 、 < N >) | 會傳回 N 個 idRepresentative 值,每個值都是從其中一個結果子集選取,其中一個結果子集具有唯一的資料行值。 每個值也會以具有 idRepresentative 值的檔識別碼傳回。 |
SUM (< 資料行 >) | 傳回群組中值的總和。 僅適用于數位。 |
注意
匯總會以個別資料行的形式傳回。 它們大多是簡單的類型,但 ByFrequency、First、DateRange 和 RepresentativeOf 除外,這些類型會以複合類型的形式傳回。
您可以使用任何數值或日期資料行進行匯總,而不只是 SELECT 子句中的數值或日期資料行。 不過,您無法分組匯總。 如果傳入的資料行引數不是數值或日期類型,則會傳回語法錯誤。
標籤部分是選擇性的,並提供更易讀的標籤別名。 如果您未包含別名標籤,則 Windows 搜尋會將函式和資料行名稱轉換成標籤。 例如,MAX (System.Document.WordCount) 會變成MAX_SystemDocumentWordCount。
多層級群組和計數
匯總會透過分葉定義,並重複。 匯總會接受群組的輸入,以定義 (檔) ,而不是其子群組的子群組。 這項功能稱為多層級群組。
除了在分葉和重複上定義的匯總之外,它們只會計算一次。 雖然同一份檔可能會在一個群組下多次表示,但匯總只會將其視為一次。 下圖說明此概念。
匯總範例
以下是 GROUP ON 子句內彙總函式的範例:
GROUP ON System.Sender ['d','m','r']
AGGREGATE COUNT() as 'Total',
MAX(System.Size) as 'Max Size',
MIN(System.Size) as 'Min Size'
OVER (SELECT System.Subject FROM systemindex)
GROUP ON System.Sender ['d', 'm', 'r']
AGGREGATE MAX(System.Search.Rank) as 'MaxRank',
MIN(System.Search.Rank) as 'MinRank'
OVER (GROUP ON system.conversationID
OVER (SELECT workid, System.ItemUrl FROM systemindex
WHERE CONTAINS (*, 'sometext')
ORDER BY System.DateCreated))
GROUP ON System.FileName [before('a'),before('z')]
AGGREGATE MAX(System.Size) as 'maxsize', MIN(System.Size) as 'MinSize'
OVER (SELECT System.FileName FROM systemindex
ORDER BY System.FileName)
GROUP ON System.author
AGGREGATE MAX(System.size) as 'maxsize'
ORDER BY min(System.Size)
OVER (GROUP ON System.DateCreated
AGGREGATE Count()
ORDER BY MAX(System.size)
OVER (SELECT filename, System.DateCreated, System.Size FROM systemindex
WHERE CONTAINS('text')))
傳回值
傳回值是在資料列集上找到為自訂屬性的變體,可以是指定的別名,如果沒有指定別名標籤,則為 「Aggregates」。