다음을 통해 공유


집계 함수 - 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네임스페이스 키워드는 네임스페이스 접두사를 정의합니다. 그런 다음 XQuery 본문에서 접두사를 사용합니다.

  • 쿼리는 요소를 포함하는 XML을 생성합니다 <NoOfWorkStations> .

  • 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 함수