Toplama İşlevleri - sayı

Şunlar için geçerlidir: SQL Server

$arg tarafından belirtilen dizide yer alan öğeler sayısını döndürür.

Syntax

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

Arguments

$arg
Sayılması gereken eşyalar.

Remarks

Eğer $arg boş bir dizis ise 0 döner.

Examples

Bu konu, AdventureWorks veritabanındaki çeşitli xml türü sütunlarında depolanan XML örneklerine karşı XQuery örnekleri sağlar.

A. Bir ürün modelinin üretimindeki çalışma merkezi konumlarının sayısını saymak için count() XQuery fonksiyonu kullanılarak

Aşağıdaki sorgu, bir ürün modelinin üretim sürecindeki iş merkezi konumlarının sayısını sayar (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  

Önceki sorgudan aşağıdakilere dikkat edin:

  • XQuery Prolog'dakiisim alanı anahtar kelimesi bir isim alanı öneki tanımlar. Bu ön ek daha sonra XQuery gövdesinde kullanılır.

  • Sorgu, öğeyi <NoOfWorkStations> içeren XML oluşturur.

  • XQuery gövdesindeki count() fonksiyonu, eleman <Location> sayısını sayar.

Sonuç şu şekildedir:

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

Ayrıca XML'i ürün model kimliği ve adını da dahil edecek şekilde oluşturabilirsiniz, aşağıdaki sorguda gösterildiği gibi:

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  

Sonuç şu şekildedir:

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

XML yerine, bu değerleri aşağıdaki sorguda gösterildiği gibi xml olmayan tip olarak döndürebilirsiniz. Sorgu, çalışma merkezi konum sayısını almak için value() yöntemini (xml veri türü) kullanır.

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  

Sonuç şu şekildedir:

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