次の方法で共有


集計関数 - count

適用対象: SQL Server

$argで指定されたシーケンスに含まれる項目の数を返します。

構文

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

引数

$arg
カウントするアイテム。

解説

$argが空のシーケンスの場合は 0 を返します。

このトピックでは、AdventureWorks データベースのさまざまな xml 型の列に格納されている XML インスタンスに対する XQuery の例を示します。

A. count() XQuery 関数を使用して、製品モデルの製造におけるワーク センターの場所の数をカウントする

次のクエリは、製品モデルの製造プロセス (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  

上のクエリに関して、次の点に注意してください。

  • XQuery Prolognamespace キーワードは、名前空間プレフィックスを定義します。 その後、プレフィックスが XQuery 本文で使用されます。

  • このクエリは、 <NoOfWorkStations> 要素を含む XML を構築します。

  • XQuery 本文の count() 関数は、 <Location> 要素の数をカウントします。

結果を次に示します。

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

次のクエリで示すように、製品モデルの ID および名前を含むように XML を構成することもできます。

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  

結果を次に示します。

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

XML 以外にも、次のクエリで示すように xml 以外の型で値を返すことができます。 クエリでは、 value() メソッド (xml データ型) を使用して、ワーク センターの場所の数を取得します。

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  

結果を次に示します。

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

参照

xml データ型に対する XQuery 関数