Bagikan melalui


Fungsi Agregat

Fungsi agregat melakukan penghitungan pada sekumpulan nilai dan mengembalikan nilai. Melakukannya memungkinkan untuk menghasilkan statistik ringkasan untuk grup multi-tingkat dengan sedikit overhead.

Tentang Fungsi Agregat

Fungsi agregat di Windows Search Bahasa Permintaan Terstruktur (SQL) memiliki sintaks berikut:

AGGREGATE <function> [AS <label>] [,<function> [AS <label>]]*

Bagian fungsi dapat mencakup salah satu fungsi dan sintaks berikut:

Fungsi Deskripsi
AVG(<column>) Mengembalikan rata-rata nilai dalam grup. Hanya berlaku untuk angka.
BYFREQUENCY(<kolom>, <N>) Mengembalikan nilai kolom N yang paling sering dari hasil dalam grup. Juga mencakup hitungan berapa kali setiap nilai terjadi dan pengidentifikasi dokumen untuk hasil yang berisi setiap nilai yang dikembalikan.
CHILDCOUNT() Mengembalikan jumlah item dalam grup (tidak termasuk subgrup). Jika ada beberapa tingkat pengelompokan, ini mengembalikan jumlah grup turunan langsung.
COUNT() Mengembalikan jumlah item dalam grup dan semua subgrup.
DATERANGE(<kolom>) Mengembalikan batas bawah dan atas nilai kolom yang ditemukan dalam grup hasil grup. Hanya berlaku untuk properti filetime.
FIRST(<column>, <N>) Mengembalikan nilai kolom N pertama dari hasil daun yang ditemukan dalam grup.
MAX(<kolom>) Mengembalikan nilai maksimum dalam ekspresi. Hanya berlaku untuk angka atau tanggal.
MIN(<kolom>) Mengembalikan nilai minimum dalam ekspresi. Hanya berlaku untuk angka atau tanggal.
REPRESENTATIVEOF(<column>, <idRepresentative>, <N>) Mengembalikan nilai N idRepresentative, masing-masing dipilih dari salah satu subset hasil yang memiliki nilai kolom unik. Setiap nilai juga dikembalikan dengan pengidentifikasi dokumen yang memiliki nilai idRepresentative.
SUM(<kolom>) Mengembalikan jumlah nilai dalam grup. Hanya berlaku untuk angka.

 

 

Catatan

Agregat dikembalikan sebagai kolom individual. Mereka sebagian besar jenis sederhana kecuali untuk ByFrequency, First, DateRange, dan RepresentativeOf yang dikembalikan sebagai jenis majemuk.

 

Anda dapat menggunakan kolom numerik atau tanggal apa pun untuk agregasi, dan tidak hanya kolom yang ada di klausa SELECT. Namun, Anda tidak dapat mengelompokkan agregat. Kesalahan sintaks dikembalikan jika argumen kolom yang diteruskan bukan jenis numerik atau tanggal.

Bagian label bersifat opsional dan menyediakan alias yang lebih mudah dibaca untuk label. Jika Anda tidak menyertakan label alias, maka Windows Search mengubah fungsi dan nama kolom menjadi label. Misalnya, MAX(System.Document.WordCount) menjadi MAX_SystemDocumentWordCount.

Grup dan Penghitungan Multi-tingkat

Agregat didefinisikan atas daun dan diduplikasi. Agregat mengambil sebagai input daun grup yang mendefinisikannya (dokumen), bukan subgrup turunannya. Fungsionalitas ini disebut sebagai pengelompokan multi-tingkat.

Selain agregat yang didefinisikan atas daun dan diduplikasi, mereka dihitung hanya sekali. Meskipun dokumen yang sama mungkin diwakili beberapa kali di bawah satu grup, agregat hanya akan mempertimbangkannya sekali. Grafik berikut mengilustrasikan konsep ini.

diagram yang menunjukkan bahwa agregat didefinisikan atas daun dan diduplikasi, dan hanya dihitung sekali

Contoh Agregat

Berikut ini adalah contoh fungsi agregat dalam klausul GROUP ON:

GROUP ON System.Sender ['d','m','r'] 
    AGGREGATE COUNT() as 'Total',
              MAX(System.Size) as 'Max Size',
              MIN(System.Size) as 'Min Size'
    OVER (SELECT System.Subject FROM systemindex)
              
GROUP ON System.Sender ['d', 'm', 'r']
      AGGREGATE MAX(System.Search.Rank) as 'MaxRank', 
                MIN(System.Search.Rank) as 'MinRank'
      OVER (GROUP ON system.conversationID
                  OVER (SELECT workid, System.ItemUrl FROM systemindex
                        WHERE CONTAINS (*, 'sometext')
                        ORDER BY System.DateCreated))
               
GROUP ON System.FileName [before('a'),before('z')] 
      AGGREGATE MAX(System.Size) as 'maxsize', MIN(System.Size) as 'MinSize' 
      OVER (SELECT System.FileName FROM systemindex
            ORDER BY System.FileName)      
            
GROUP ON System.author 
      AGGREGATE MAX(System.size) as 'maxsize' 
      ORDER BY min(System.Size) 
      OVER (GROUP ON System.DateCreated 
                  AGGREGATE Count() 
                  ORDER BY MAX(System.size) 
                  OVER (SELECT filename, System.DateCreated, System.Size FROM systemindex
                        WHERE CONTAINS('text')))

Tampilkan Nilai

Nilai yang dikembalikan adalah varian yang ditemukan pada set baris sebagai properti kustom, baik sebagai alias yang ditentukan atau sebagai "Agregat" jika tidak ada label alias yang ditentukan.