集計関数 - 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 Prolog の namespace キーワードは、名前空間プレフィックスを定義します。 その後、プレフィックスが 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