Freigeben über


Aggregatfunktionen

Eine Aggregatfunktion führt eine Berechnung für eine Gruppe von Werten aus und gibt einen Wert zurück. Auf diese Weise können Zusammenfassungsstatistiken für Gruppen mit mehreren Ebenen mit geringem Aufwand generiert werden.

Informationen zu Aggregatfunktionen

Aggregatfunktionen in der Windows Search Structured Query Language (SQL) weisen die folgende Syntax auf:

AGGREGATE <function> [AS <label>] [,<function> [AS <label>]]*

Der Funktionsteil kann eine der folgenden Funktionen und Syntaxen enthalten:

Funktion Beschreibung
AVG(<Spalte>) Gibt den Mittelwert der Werte in einer Gruppe zurück. Gilt nur für Zahlen.
BYFREQUENCY(<Spalte>, <N>) Gibt die häufigsten N-Spaltenwerte aus den Ergebnissen in der Gruppe zurück. Enthält außerdem eine Anzahl der Male, wie oft jeder Wert aufgetreten ist, und Dokumentbezeichner für Ergebnisse, die jeden zurückgegebenen Wert enthalten.
CHILDCOUNT() Gibt die Anzahl der Elemente in einer Gruppe zurück (mit Ausnahme von Untergruppen). Wenn mehrere Gruppierungsebenen vorhanden sind, gibt dies die Anzahl der unmittelbaren untergeordneten Gruppen zurück.
ANZAHL() Gibt die Anzahl der Elemente in einer Gruppe und alle Untergruppen zurück.
DATERANGE(<Spalte>) Gibt die untere und obere Grenze der Spaltenwerte zurück, die in der Gruppenergebnisgruppe gefunden wurden. Nur für Dateizeiteigenschaften gültig.
FIRST(<Spalte>, <N>) Gibt die ersten N-Spaltenwerte aus Blattergebnissen zurück, die in einer Gruppe gefunden wurden.
MAX(<Spalte>) Gibt den Maximalwert im Ausdruck zurück. Gilt nur für Zahlen oder Datumsangaben.
MIN(<Spalte>) Gibt den Minimalwert im Ausdruck zurück. Gilt nur für Zahlen oder Datumsangaben.
REPRESENTATIVEOF(<Spalte>, <idRepresentative>, <N>) Gibt N idRepresentative -Werte zurück, die jeweils aus einer der Ergebnisuntermengen ausgewählt sind, die einen eindeutigen Spaltenwert aufweisen. Jeder Wert wird auch mit einem Dokumentbezeichner zurückgegeben, der den idRepresentativen Wert aufweist.
SUMME(<Spalte>) Gibt die Summe der Werte in einer Gruppe zurück. Gilt nur für Zahlen.

 

 

Anmerkung

Aggregate werden als einzelne Spalten zurückgegeben. Sie sind hauptsächlich einfache Typen mit Ausnahme von ByFrequency, First, DateRange und RepresentativeOf, die als Zusammengesetzte Typen zurückgegeben werden.

 

Sie können eine beliebige numerische oder Datumsspalte für Aggregationen verwenden, und nicht nur diejenigen, die sich in der SELECT-Klausel befinden. Sie können jedoch nicht nach Aggregaten gruppieren. Ein Syntaxfehler wird zurückgegeben, wenn das übergebene Spaltenargument kein numerischer oder Datumstyp ist.

Der Bezeichnungsteil ist optional und bietet einen besser lesbaren Alias für das Etikett. Wenn Sie keine Aliasbezeichnung einschließen, transformiert Windows Search die Funktion und den Spaltennamen in eine Bezeichnung. Beispielsweise wird MAX(System.Document.WordCount) MAX_SystemDocumentWordCount.

Gruppen mit mehreren Ebenen und Zählen

Aggregate werden über Blätter definiert und dupliziert. Ein Aggregat verwendet als Eingabe die Blätter der Gruppe, die sie (Dokumente) definiert, anstelle der Untergruppen der untergeordneten Elemente. Diese Funktion wird als Gruppierung mit mehreren Ebenen bezeichnet.

Zusätzlich zu Aggregaten, die über Blätter definiert und dupliziert werden, werden sie nur einmal gezählt. Obwohl dasselbe Dokument mehrmals unter einer Gruppe dargestellt werden kann, würden Aggregate es nur einmal in Betracht ziehen. Die folgende Grafik veranschaulicht dieses Konzept.

Diagramm, das zeigt, dass Aggregate über Blätter und Duplikate definiert sind und nur einmal

Aggregatbeispiele

Im Folgenden sind Beispiele für Aggregatfunktionen innerhalb der GROUP ON-Klausel aufgeführt:

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')))

Rückgabewert

Der Rückgabewert ist eine Variante, die im Rowset als benutzerdefinierte Eigenschaft gefunden wird, entweder als angegebene Aliase oder als "Aggregates", wenn keine Aliasbeschriftung angegeben ist.