Fonctions d’agrégation - nombreAggregate Functions - count

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2012)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Retourne le nombre d’éléments contenus dans la séquence spécifiée par $arg.Returns the number of items that are contained in the sequence specified by $arg.

SyntaxeSyntax


fn:count($arg as item()*) as xs:integer  

ArgumentsArguments

$arg$arg
Éléments à compter.Items to count.

NotesRemarks

Retourne 0 si $arg est une séquence vide.Returns 0 if $arg is an empty sequence.

ExemplesExamples

Cette rubrique fournit des exemples de XQuery relatifs à des instances XML stockés dans différentes xml colonnes de type dans la base de données AdventureWorks.This topic provides XQuery examples against XML instances that are stored in various xml type columns in the AdventureWorks database.

A.A. Utilisation de la fonction XQuery count() pour déterminer le nombre de sites de production impliqués dans la fabrication d'un modèle de produitUsing the count() XQuery function to count the number of work center locations in the manufacturing of a product model

La requête suivante détermine le nombre de sites de production impliqués dans la fabrication d'un modèle de produit (ProductModelID=7).The following query counts the number of work center locations in the manufacturing process of a product model (ProductModelID=7).

SELECT Production.ProductModel.ProductModelID,   
       Production.ProductModel.Name,   
       Instructions.query('  
declare namespace AWMI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
       <NoOfWorkStations>  
          { count(/AWMI:root/AWMI:Location) }  
       </NoOfWorkStations>  
') as WorkCtrCount  
FROM Production.ProductModel  
WHERE Production.ProductModel.ProductModelID=7  

Notez les points suivants dans la requête précédente :Note the following from the previous query:

  • Le espace de noms mot clé dans prologue XQuery définit un préfixe d’espace de noms.The namespace keyword in XQuery Prolog defines a namespace prefix. Le préfixe est ensuite utilisé dans le corps XQuery.The prefix is then used in the XQuery body.

  • La requête construit le document XML qui comprend l'élément <NoOfWorkStations>.The query constructs XML that includes the <NoOfWorkStations> element.

  • Le count() de fonction dans le corps XQuery détermine le nombre de <Location> éléments.The count() function in the XQuery body counts the number of <Location> elements.

    Voici le résultat obtenu :This is the result:

ProductModelID   Name                 WorkCtrCount       
-------------- ---------------------------------------------------  
7             HL Touring Frame  <NoOfWorkStations>6</NoOfWorkStations>     

Vous pouvez également construire le document XML de manière à ce qu'il comprenne l'ID et le nom du modèle de produit, comme le montre la requête suivante :You can also construct the XML to include the product model ID and name, as shown in the following query:

SELECT Instructions.query('  
declare namespace AWMI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
       <NoOfWorkStations  
             ProductModelID= "{ sql:column("Production.ProductModel.ProductModelID") }"   
             ProductModelName = "{ sql:column("Production.ProductModel.Name") }" >  
          { count(/AWMI:root/AWMI:Location) }  
       </NoOfWorkStations>  
') as WorkCtrCount  
FROM Production.ProductModel  
WHERE Production.ProductModel.ProductModelID= 7  

Voici le résultat obtenu :This is the result:

<NoOfWorkStations ProductModelID="7"   
                  ProductModelName="HL Touring Frame">6</NoOfWorkStations>  

Comme le montre la requête ci-après, vous pouvez renvoyer ces valeurs en tant que type non-xml, plutôt que sous la forme de données XML.Instead of XML, you may return these values as non-xml type, as shown in the following query. La requête utilise le le méthode value() (type de données xml) pour récupérer le nombre.The query uses the value() method (xml data type) to retrieve the work center location count.

SELECT  ProductModelID,   
        Name,   
        Instructions.value('declare namespace AWMI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
           count(/AWMI:root/AWMI:Location)', 'int' ) as WorkCtrCount  
FROM Production.ProductModel  
WHERE ProductModelID=7  

Voici le résultat obtenu :This is the result:

ProductModelID    Name            WorkCtrCount  
-------------- ---------------------------------  
7              HL Touring Frame        6     

Voir aussiSee Also

Fonctions XQuery impliquant le type de données xmlXQuery Functions against the xml Data Type