Gecompileerde functies

Een statistische functie voert een berekening uit op een set waarden en retourneert een waarde. Hierdoor kunt u samenvattingsstatistieken genereren voor groepen op meerdere niveaus met weinig overhead.

Over statistische functies

Statistische functies in Windows Search Structured Query Language (SQL) hebben de volgende syntaxis:

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

Het functiegedeelte kan een van de volgende functies en syntaxis bevatten:

Functie Beschrijving
AVG(<kolom>) Retourneert het gemiddelde van de waarden in een groep. Alleen van toepassing op getallen.
BYFREQUENCY(<kolom>, <N>) Retourneert de meest voorkomende N-kolomwaarden uit de resultaten in de groep. Bevat ook het aantal keren dat elke waarde heeft plaatsgevonden en document-id's voor resultaten die elke geretourneerde waarde bevatten.
CHILDCOUNT() Retourneert het aantal items in een groep (met uitzondering van subgroepen). Als er meerdere groepeerniveaus zijn, wordt hiermee het aantal directe onderliggende groepen geretourneerd.
COUNT() Retourneert het aantal items in een groep en alle subgroepen.
DATERANGE(<kolom>) Retourneert de onder- en bovengrenzen van de kolomwaarden die in de groepsresultatengroep zijn gevonden. Alleen geldig voor filetime-eigenschappen.
FIRST(<kolom>, <N>) Retourneert de eerste N-kolomwaarden uit bladresultaten die in een groep zijn gevonden.
MAX(<kolom>) Retourneert de maximumwaarde in de expressie. Alleen van toepassing op getallen of datums.
MIN(<kolom>) Retourneert de minimumwaarde in de expressie. Alleen van toepassing op getallen of datums.
REPRESENTATIVEOF(<kolom>, <idRepresentative>, <N>) Retourneert N idRepresentatieve waarden, die elk zijn geselecteerd uit een van de resultaatsubsets met een unieke kolomwaarde. Elke waarde wordt ook geretourneerd met een document-id die de idRepresentative waarde heeft.
SUM(<kolom>) Retourneert de som van de waarden in een groep. Alleen van toepassing op getallen.

 

 

Notitie

Aggregaties worden geretourneerd als afzonderlijke kolommen. Dit zijn voornamelijk eenvoudige typen, met uitzondering van ByFrequency, First, DateRange en RepresentativeOf die worden geretourneerd als samengestelde typen.

 

U kunt elke numerieke of datumkolom gebruiken voor aggregaties en niet alleen voor aggregaties die zich in de SELECT-component bevinden. U kunt echter niet groeperen op aggregaties. Er wordt een syntaxisfout geretourneerd als het doorgegeven kolomargument geen numeriek of datumtype is.

Het labelgedeelte is optioneel en biedt een beter leesbare alias voor het label. Als u geen aliaslabel opneemt, transformeert Windows Search de functie en kolomnaam in een label. Max(System.Document.WordCount) wordt bijvoorbeeld MAX_SystemDocumentWordCount.

Groepen op meerdere niveaus en tellen

Aggregaties worden gedefinieerd over bladeren en worden gedupliceerd. Een aggregaties neemt als invoer de bladeren van de groep die deze definieert (documenten) in plaats van de subgroepen van de onderliggende groepen. Deze functionaliteit wordt groepering op meerdere niveaus genoemd.

Naast aggregaties die worden gedefinieerd over bladeren en gedupliceerd, worden ze slechts één keer geteld. Hoewel hetzelfde document meerdere keren onder één groep kan worden weergegeven, wordt dit slechts één keer beschouwd door aggregaties. In de volgende afbeelding ziet u dit concept.

diagram dat laat zien dat aggregaties worden gedefinieerd over bladeren en gedupliceerd en slechts eenmaal worden geteld

Statistische voorbeelden

Hieronder ziet u voorbeelden van statistische functies in de GROUP ON-component:

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

Retourwaarde

De retourwaarde is een variant die in de rijenset als een aangepaste eigenschap wordt gevonden, hetzij als de opgegeven aliassen of als aggregaties als er geen aliaslabel is opgegeven.