Funções de Agregação – count
Aplica-se: SQL Server
Retorna o número de itens contidos na sequência especificada por $arg.
Sintaxe
fn:count($arg as item()*) as xs:integer
Argumentos
$arg
Itens a serem contados.
Comentários
Retorna 0 se $arg for uma sequência vazia.
Exemplos
Este tópico fornece exemplos de XQuery em relação a instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.
R. Usando a função count() XQuery para contar o número de locais de centro de trabalho na fabricação de um modelo de produto
A consulta a seguir conta o número de locais de centro de trabalho no processo de fabricação de um modelo de produto (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
Observe o seguinte na consulta anterior:
A palavra-chave namespace no XQuery Prolog define um prefixo de namespace. O prefixo é então usado no corpo do XQuery.
A consulta constrói XML que inclui o <
NoOfWorkStations
> elemento.A função count() no corpo XQuery conta o número de <
Location
> elementos.
Este é o resultado:
ProductModelID Name WorkCtrCount
-------------- ---------------------------------------------------
7 HL Touring Frame <NoOfWorkStations>6</NoOfWorkStations>
Você também pode construir o XML para incluir o nome e a ID do modelo do produto, como mostrado na seguinte consulta:
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
Este é o resultado:
<NoOfWorkStations ProductModelID="7"
ProductModelName="HL Touring Frame">6</NoOfWorkStations>
Em vez de XML, você pode retornar esses valores como tipo não xml, como mostrado na consulta a seguir. A consulta usa o método value() (tipo de dados xml) para recuperar a contagem de locais do centro de trabalho.
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
Este é o resultado:
ProductModelID Name WorkCtrCount
-------------- ---------------------------------
7 HL Touring Frame 6