Aggregatfunktionen

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

Informationen zu Aggregatfunktionen

Aggregatfunktionen in Windows Search strukturierte Abfragesprache (SQL) weisen die folgende Syntax auf:

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

Der Funktionsteil kann eine der folgenden Funktionen und Syntax 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 auch die Anzahl der Vorkommen jedes Werts 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, wird die Anzahl der unmittelbar untergeordneten Gruppen zurückgegeben.
COUNT() Gibt die Anzahl der Elemente in einer Gruppe und allen Untergruppen zurück.
DATERANGE( < spalte > ) Gibt die untere und obere Grenze der Spaltenwerte zurück, die in der Gruppenergebnisgruppe gefunden wurden. Nur für filetime-Eigenschaften gültig.
FIRST( < spalte > , < N > ) Gibt die ersten N Spaltenwerte aus Blattergebnissen zurück, die in einer Gruppe gefunden wurden.
MAX( < Spalte > ) Gibt den größten Wert im Ausdruck zurück. Gilt nur für Zahlen oder Datumsangaben.
MIN( < Spalte > ) Gibt den kleinsten Wert im Ausdruck zurück. Gilt nur für Zahlen oder Datumsangaben.
REPRESENTATIVEOF( < column > , < idRepresentative > , < N > ) Gibt N idRepresentative-Werte zurück, die jeweils aus einer der Ergebnisteilmengen mit einem eindeutigen Spaltenwert ausgewählt wurden. Jeder Wert wird auch mit einem Dokumentbezeichner zurückgegeben, der über den wert idRepresentative verfügt.
SUM( < spalte > ) Gibt die Summe der Werte in einer Gruppe zurück. Gilt nur für Zahlen.

Hinweis

Aggregate werden als einzelne Spalten zurückgegeben. Sie sind größtenteils einfache Typen mit Ausnahme von ByFrequency, First, DateRange und RepresentativeOf, die als zusammengesetzte Typen zurückgegeben werden.

Sie können eine beliebige numerische spalte oder datumsspalte für Aggregationen verwenden, nicht nur diejenigen, die in der SELECT-Klausel enthalten sind. Sie können jedoch nicht nach Aggregaten gruppieren. Ein Syntaxfehler wird zurückgegeben, wenn das übergebene Spaltenargument weder ein numerischer noch ein Datumstyp ist.

Der Bezeichnungsteil ist optional und stellt einen lesbareren Alias für die Bezeichnung bereit. Wenn Sie keine Aliasbezeichnung einschließen, transformiert Windows Search die Funktion und den Spaltennamen in eine Bezeichnung. Beispiel: MAX(System.Document. WordCount) wird zu MAX _ SystemDocumentWordCount.

Gruppen und Zählungen mit mehreren Ebenen

Aggregate werden über Blätter definiert und dupliziert. Ein Aggregat nimmt als Eingabe die Blätter der Gruppe an, die sie definiert (Dokumente) und nicht die Untergruppen ihrer 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. Das gleiche Dokument kann zwar mehrmals unter einer Gruppe dargestellt werden, aggregates würde es jedoch nur einmal berücksichtigen. Die folgende Grafik veranschaulicht dieses Konzept.

Diagramm, das zeigt, dass Aggregate über Blätter definiert und dupliziert werden und nur einmal gezählt werden

Aggregieren von Beispielen

Im Folgenden sind Beispiele für Aggregatfunktionen in 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 die angegebenen Aliase oder als "Aggregates", wenn keine Aliasbezeichnung angegeben ist.