Sdílet prostřednictvím


Agregační funkce – počet

platí pro:SQL Server

Vrátí počet položek obsažených v posloupnosti určené $arg.

Syntax

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

Argumenty

$arg
Položky, které se mají spočítat.

Poznámky

Vrátí hodnotu 0, pokud je $arg prázdná sekvence.

Příklady

Toto téma obsahuje příklady XQuery pro instance XML, které jsou uloženy v různých xml sloupce typu v databázi AdventureWorks.

A. Pomocí funkce count() XQuery spočítáte počet umístění pracovních center při výrobě modelu produktu.

Následující dotaz spočítá počet umístění pracovních center ve výrobním procesu modelu produktu (ProductModelID=7).

SELECT Production.ProductModel.ProductModelID,   
       Production.ProductModel.Name,   
       Instructions.query('  
declare namespace AWMI="https://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  

Všimněte si následujících věcí z předchozího dotazu:

  • Klíčové slovo oboru názvů v XQuery Prolog definuje předponu oboru názvů. Předpona se pak použije v těle XQuery.

  • Dotaz vytvoří XML, který obsahuje <NoOfWorkStations> element.

  • Funkce count() v těle XQuery spočítá počet prvků <Location>.

Toto je výsledek:

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

Kód XML můžete také vytvořit tak, aby zahrnoval ID a název modelu produktu, jak je znázorněno v následujícím dotazu:

SELECT Instructions.query('  
declare namespace AWMI="https://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  

Toto je výsledek:

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

Místo XML můžete tyto hodnoty vrátit jako jiný než xml typ, jak je znázorněno v následujícím dotazu. Dotaz používá metodu value() (datový typ XML) k načtení počtu umístění pracovního centra.

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

Toto je výsledek:

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

Viz také

funkce XQuery proti datového typu XML