집계 함수 - sum
적용 대상: SQL Server
숫자 시퀀스의 합계를 반환합니다.
구문
fn:sum($arg as xdt:anyAtomicType*) as xdt:anyAtomicType
인수
$arg
합계를 계산할 원자성 값의 시퀀스입니다.
설명
sum()에 전달되는 원자화된 값의 모든 형식은 동일한 기본 형식의 하위 형식이어야 합니다. 허용되는 기본 형식은 세 가지 기본 제공 숫자 기본 형식 또는 xdt:untypedAtomic입니다. xdt:untypedAtomic 유형의 값이 xs:double로 캐스팅됩니다. 이러한 형식이 혼합되어 있거나 다른 형식의 다른 값이 전달되면 정적 오류가 발생합니다.
sum()의 결과는 입력이 선택적으로 빈 시퀀스인 경우에도 xdt:untypedAtomic의 경우 xs:double과 같은 전달된 형식의 기본 형식을 받습니다. 입력이 정적으로 비어 있으면 결과는 정적 및 동적 형식의 xs:integer를 사용하여 0입니다.
sum() 함수는 숫자 값의 합계를 반환합니다. xdt:untypedAtomic 값을 xs:double로 캐스팅할 수 없는 경우 입력 시퀀스 $arg 값이 무시됩니다. 입력이 동적으로 계산된 빈 시퀀스인 경우 사용된 기본 형식의 값 0이 반환됩니다.
오버플로 또는 범위를 벗어난 예외가 발생할 때 함수는 런타임 오류를 반환합니다.
예제
이 항목에서는 데이터베이스의 다양한 xml 형식 열에 저장된 XML 인스턴스에 대한 XQuery 예제를 AdventureWorks2022
제공합니다.
A. sum() XQuery 함수를 사용하여 제조 프로세스의 모든 작업 센터 위치에 대한 총 근로 시간 검색
다음 쿼리는 제조 지침이 저장되는 모든 제품 모델의 제조 프로세스에서 모든 작업 센터 위치에 대한 총 노동 시간을 찾습니다.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
<ProductModel PMID= "{ sql:column("Production.ProductModel.ProductModelID") }"
ProductModelName = "{ sql:column("Production.ProductModel.Name") }" >
<TotalLaborHrs>
{ sum(//AWMI:Location/@LaborHours) }
</TotalLaborHrs>
</ProductModel>
') as Result
FROM Production.ProductModel
WHERE Instructions is not NULL
다음은 결과의 일부입니다.
<ProductModel PMID="7" ProductModelName="HL Touring Frame">
<TotalLaborHrs>12.75</TotalLaborHrs>
</ProductModel>
<ProductModel PMID="10" ProductModelName="LL Touring Frame">
<TotalLaborHrs>13</TotalLaborHrs>
</ProductModel>
...
결과를 XML로 반환하는 대신 다음 쿼리에서와 같이 관계형 결과를 생성하는 쿼리를 작성할 수 있습니다.
SELECT ProductModelID,
Name,
Instructions.value('declare namespace
AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
sum(//AWMI:Location/@LaborHours)', 'float') as TotalLaborHours
FROM Production.ProductModel
WHERE Instructions is not NULL
이는 부분적인 결과입니다.
ProductModelID Name TotalLaborHours
-------------- -------------------------------------------------
7 HL Touring Frame 12.75
10 LL Touring Frame 13
43 Touring Rear Wheel 3
...
구현 제한 사항
제한 사항은 다음과 같습니다.
sum()의 단일 인수 버전만 지원됩니다.
입력이 동적으로 계산된 빈 시퀀스인 경우 사용된 기준 유형의 값 0이 xs:integer 유형 대신 반환됩니다.
sum() 함수는 모든 정수를 xs:decimal에 매핑합니다.
xs:duration 형식의 값에 대한 sum() 함수는 지원되지 않습니다.
기본 형식 경계 간에 형식을 혼합하는 시퀀스는 지원되지 않습니다.
sum((xs:double("INF"), xs:double("-INF"))은 도메인 오류를 발생합니다.