Partager via


Fonctions d’agrégation

Une fonction d’agrégation effectue un calcul sur un ensemble de valeurs et retourne une valeur. Cela permet de générer des statistiques récapitulatives pour les groupes à plusieurs niveaux avec peu de surcharge.

À propos des fonctions d’agrégation

Les fonctions d’agrégation dans Recherche Windows langage SQL (SQL) ont la syntaxe suivante :

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

La partie fonction peut inclure l’une des fonctions et syntaxe suivantes :

Fonction Description
AVG(<colonne>) Renvoie la moyenne des valeurs d'un groupe. S’applique uniquement aux nombres.
BYFREQUENCY(<column>, <N>) Retourne les valeurs de colonne N les plus fréquentes des résultats du groupe. Inclut également le nombre de fois où chaque valeur s’est produite et les identificateurs de document pour les résultats qui contiennent chaque valeur retournée.
CHILDCOUNT() Retourne le nombre d’éléments d’un groupe (à l’exclusion des sous-groupes). S’il existe plusieurs niveaux de regroupement, cela retourne le nombre de groupes enfants immédiats.
COUNT() Retourne le nombre d’éléments d’un groupe et de tous les sous-groupes.
DATERANGE(<column>) Retourne les limites inférieure et supérieure des valeurs de colonne trouvées dans le groupe de résultats du groupe. Valide uniquement pour les propriétés filetime.
FIRST(<column>, <N>) Retourne les premières valeurs de colonne N des résultats feuille trouvés dans un groupe.
MAX(<colonne>) Retourne la valeur maximale de l'expression. S’applique uniquement aux nombres ou aux dates.
MIN(<colonne>) Retourne la valeur minimale de l'expression. S’applique uniquement aux nombres ou aux dates.
REPRESENTATIVEOF(<column>, <idRepresentative>, <N>) Retourne N valeurs idRepresentatives, chacune sélectionnée dans l’un des sous-ensembles de résultats qui a une valeur de colonne unique. Chaque valeur est également retournée avec un identificateur de document qui a la valeur idRepresentative.
SUM(<column>) Retourne la somme des valeurs d’un groupe. S’applique uniquement aux nombres.

 

 

Notes

Les agrégats sont retournés sous forme de colonnes individuelles. Il s’agit principalement de types simples, à l’exception de ByFrequency, First, DateRange et RepresentativeOf qui sont retournés en tant que types composés.

 

Vous pouvez utiliser n’importe quelle colonne numérique ou de date pour les agrégations, et pas seulement celles qui se trouvent dans la clause SELECT. Toutefois, vous ne pouvez pas regrouper sur des agrégats. Une erreur de syntaxe est retournée si l’argument de colonne transmis n’est pas un type numérique ou date.

La partie étiquette est facultative et fournit un alias plus lisible pour l’étiquette. Si vous n’incluez pas d’étiquette d’alias, Recherche Windows transforme le nom de la fonction et de la colonne en étiquette. Par exemple, MAX(System.Document.WordCount) devient MAX_SystemDocumentWordCount.

Groupes multiniveux et comptage

Les agrégats sont définis sur des feuilles et sont dupliqués. Un agrégat prend comme entrée les feuilles du groupe qui le définit (documents), plutôt que les sous-groupes de ses enfants. Cette fonctionnalité est appelée regroupement à plusieurs niveaux.

En plus des agrégats définis sur les feuilles et dupliqués, ils ne sont comptés qu’une seule fois. Bien que le même document puisse être représenté plusieurs fois sous un même groupe, les agrégats ne le considèrent qu’une seule fois. Le graphique suivant illustre ce concept.

diagramme montrant que les agrégats sont définis sur les feuilles et dupliqués, et ne sont comptés qu’une seule fois

Exemples d’agrégation

Voici des exemples de fonctions d’agrégation au sein de la clause 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')))

Valeur renvoyée

La valeur de retour est une variante trouvée dans l’ensemble de lignes sous forme de propriété personnalisée, soit comme alias spécifiés, soit comme « Agrégats » si aucune étiquette d’alias n’est spécifiée.