Aracılığıyla paylaş


Toplam işlev (XQuery)

Sayı dizisi toplamını verir.

Sözdizimi

fn:sum($arg as xdt:anyAtomicType*) as xdt:anyAtomicType

Bağımsız değişkenler

  • $arg
    Hesaplanması için olan toplamıdır atomik değerleri dizisi.

Açıklamalar

İletilen atomized değerleri her türlü sum() aynı temel türün alt türlerinden olmak zorunda. Kabul edilen temel üç yerleşik sayısal temel türler ya da xdt: untypedAtomic türleridir. Değerleri türü xdt: untypedAtomic xs: double için döküm. Bu tür karışımı ise veya diğer türdeki diğer değerleri aktarılırsa, statik bir hata ortaya çıkar.

Sonucu sum() giriş isteğe bağlı olarak boş sırası bile geçirilen türü xs: Double xdt: untypedAtomic, rezervasyonun gibi temel türü alır. Giriş statik boşsa, sonuç ile statik ve dinamik türü xs: integer 0'dır.

Sum() işlevi sayısal değerlerin toplamını döndürür. Xs: double için xdt: untypedAtomic değer atanamaz, değer giriş sırası gözardı edilir $arg. Giriş bir dinamik olarak hesaplanan boş sırası ise, kullanılan temel türü 0 değeri döndürülür.

Taşma çalışma zamanı hatası işlevi veya aralık dışında özel durum oluşur.

Örnekler

Bu konu çeşitli depolanan xml örnekleri karşı XQuery örnekler sağlar xml yazın sütunlarında AdventureWorks2012 veritabanı. Bu sütunlar genel bakış için bkz: DEL - xml Data Type Representation in the AdventureWorks2008R2 Database.

A.Üretim sürecinde tüm iş merkezi konumları işçilik saat toplam kombine sayısını bulmak için sum() XQuery işlevini kullanma

Aşağıdaki sorgu, kendisi için tüm ürün modellerinin üretim yönergeleri depolanan üretim sürecinde tüm iş merkezi konumları toplam işçilik saat 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       
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 bir sonucudur.

<ProductModel PMID="7" ProductModelName="HL Touring Frame">
   <TotalLaborHrs>12.75</TotalLaborHrs>
</ProductModel>
<ProductModel PMID="10" ProductModelName="LL Touring Frame">
  <TotalLaborHrs>13</TotalLaborHrs>
</ProductModel>
...

<ProductModel PMID="7" ProductModelName="HL Touring Frame">
   <TotalLaborHrs>12.75</TotalLaborHrs>
</ProductModel>
<ProductModel PMID="10" ProductModelName="LL Touring Frame">
  <TotalLaborHrs>13</TotalLaborHrs>
</ProductModel>
...

Sonuç xml olarak döndürmek yerine, sorgu ilişkisel sonuçlar oluşturmak için aşağıdaki sorgu 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        
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                     
...

ProductModelID Name                 TotalLaborHours       
-------------- -------------------------------------------------
7              HL Touring Frame           12.75                 
10             LL Touring Frame           13                    
43             Touring Rear Wheel         3                     
...

Uygulama kısıtlamaları

Bu sınırlamalar şunlardır:

  • Yalnızca tek bağımsız değişken sürümü sum() desteklenir.

  • Giriş bir dinamik olarak hesaplanan boş sırası ise, kullanılan temel türü 0 değeri türü xs: integer yerine döner.

  • Sum() işlevi tüm tamsayılar xs: decimal için eşleştirir.

  • Sum() türü xs: duration değerleri işlevi desteklenmiyor.

  • Temel tür sınırlarında türleri karıştırmak sıraları desteklenmez.

  • Sum((xs:double("INF"), xs:Double("-INF"))) bir etki alanı hata yükseltir.

Ayrıca bkz.

Başvuru

Xml veri türü karşı XQuery işlevleri