Toplamişlev (XQuery)
Bir dizi sayı toplamını verir.
fn:sum($arg as xdt:anyAtomicType*) as xdt:anyAtomicType
Bağımsız değişkenler
- $arg
Sıra atomik değerler, hesaplanması için toplamıdır.
Remarks
Geçirilen atomized değerlerin türleri SUM() alt türlerinden temel aynı türde olması gerekir.Kabul edilen temel yerleşik sayısal temel üç ya da xdt:untypedAtomic türleridir.Tür xdt:untypedAtomic değerlerini xs:double için artığını.Bu türlerinin bir karışımını varsa veya diğer türdeki diğer değerleri geçirilirse, statik bir hata ortaya çıkar.
Sonucu SUM() , giriş isteğe bağlı olarak, sıra boş olsa bile xs:double xdt:untypedAtomic, örneğinde olduğu gibi geçirilen türü temel tür alır.Giriş, statik olarak boş ise, xs:integer statik ve dinamik türü ile 0 sonucudur.
The sum() işlev returns the sum of the numeric values.Bir xdt:untypedAtomic değeri için xs:double atanamaz, değer giriş sırasını göz ardı edilir $arg. Giriş dinamik olarak hesaplanan, boş bir dizi ise, kullanılan temel tür 0 değerini verir.
işlev Taşma veya aralık özel durum dışında çalışma zamanı hatası oluşuyor döndürür.
Örnekler
Bu konu, çeşitli içinde depolanan XML örnekleri karşı XQuery örnekler sağlar. XML türü sütunAdventureWorks Veritabanı. Konusuna genel bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks veritabanındaki.
C.Üretim sürecinde işçilik saattir ve iş merkezi için tüm konumları birleşik toplam sayısını bulmak için sum() XQuery işlevini kullanma
Iş merkezi için tüm konumlar için toplam işçilik saati, aşağıdaki sorgu üretim yönergeleri için tüm ürün modellerinde, depolanan üretim sürecinde bulur.
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
Bu kısmi kaynaklanır.
<ProductModel PMID="7" ProductModelName="HL Touring Frame">
<TotalLaborHrs>12.75</TotalLaborHrs>
</ProductModel>
<ProductModel PMID="10" ProductModelName="LL Touring Frame">
<TotalLaborHrs>13</TotalLaborHrs>
</ProductModel>
...
Sonuç olarak, XML döndürmek yerine, sorgu ilişkisel sonuçlar üretmek için aşağıdaki sorguda gösterildiği gibi yazabilirsiniz:
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
Bu kısmi bir sonucudur:
ProductModelID Name TotalLaborHours
-------------- -------------------------------------------------
7 HL Touring Frame 12.75
10 LL Touring Frame 13
43 Touring Rear Wheel 3
...
Uygulama kısıtlamaları
Sınırlamaları şunlardır:
Yalnızca tek bir bağımsız değişken sürüm SUM() desteklenir.
Giriş, dinamik olarak hesaplanan, boş bir dizi ise, kullanılan temel tür 0 değerinin Türü xs:integer yerine döndürülür.
The sum() işlev maps all integers to xs:decimal.
The sum() işlev on values of type xs:duration is not supported.
Temel tür sınırlarında türlerini karma sıralar desteklenmez.
The sum((xs:double(“INF”) xs:double(“-INF”))) bir etki alanı hata yükseltir.