Bagikan melalui


Fungsi Agregat - hitungan

Berlaku untuk: SQL Server

Mengembalikan jumlah item yang terkandung dalam urutan yang ditentukan oleh $arg.

Sintaks

  
fn:count($arg as item()*) as xs:integer  

Argumen

$arg
Item yang akan dihitung.

Keterangan

Mengembalikan 0 jika $arg adalah urutan kosong.

Contoh

Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.

J. Menggunakan fungsi count() XQuery untuk menghitung jumlah lokasi pusat kerja dalam pembuatan model produk

Kueri berikut menghitung jumlah lokasi pusat kerja dalam proses manufaktur model produk (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  

Perhatikan hal berikut ini dari kueri sebelumnya:

  • Kata kunci namespace di XQuery Prolog mendefinisikan awalan namespace. Awalan kemudian digunakan dalam isi XQuery.

  • Kueri membuat XML yang menyertakan <NoOfWorkStations> elemen .

  • Fungsi count() dalam isi XQuery menghitung jumlah <Location> elemen.

Ini adalah hasilnya:

ProductModelID   Name                 WorkCtrCount       
-------------- ---------------------------------------------------  
7             HL Touring Frame  <NoOfWorkStations>6</NoOfWorkStations>     

Anda juga bisa membuat XML untuk menyertakan ID dan nama model produk, seperti yang diperlihatkan dalam kueri berikut:

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  

Ini adalah hasilnya:

<NoOfWorkStations ProductModelID="7"   
                  ProductModelName="HL Touring Frame">6</NoOfWorkStations>  

Alih-alih XML, Anda dapat mengembalikan nilai-nilai ini sebagai tipe non-xml, seperti yang diperlihatkan dalam kueri berikut. Kueri menggunakan metode value() (jenis data xml) untuk mengambil jumlah lokasi pusat kerja.

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  

Ini adalah hasilnya:

ProductModelID    Name            WorkCtrCount  
-------------- ---------------------------------  
7              HL Touring Frame        6     

Lihat Juga

Fungsi XQuery terhadap Tipe Data xml