Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
GRUP AKTIF... ATAS... pernyataan mengembalikan kumpulan baris hierarkis di mana hasil pencarian dibagi menjadi grup berdasarkan kolom tertentu dan rentang pengelompokan opsional. Jika Anda mengelompokkan kolom System.Kind, kumpulan hasil dibagi menjadi beberapa grup: satu untuk dokumen, satu untuk komunikasi, dan sebagainya. Jika Anda mengelompokkan System.Size dan rentang grup 100 KB, kumpulan hasil dibagi menjadi tiga grup: item berukuran < 100 KB, item berukuran >= 100 KB, dan item tanpa nilai ukuran. Anda juga dapat menggabungkan pengelompokan dengan fungsi.
Topik ini mencakup subjek berikut:
- Sintaks
- Rentang Grup
- Grup Pelabelan
- Grup Pemesanan
- Grup Berlapis
- pengelompokan pada properti Vektor
- Contoh Lainnya
- Topik terkait
Sintaksis
GRUP AKTIF ... ATAS... pernyataan memiliki sintaks berikut:
GROUP ON <column> ['['<group ranges>']']]
[AGGREGATE <aggregate_function>]
[ORDER BY <column> [<direction>]] | [ORDER IN GROUP '<group name>' BY <column> [<direction>]]
OVER (GROUP ON... | SELECT... ] )
di mana rentang pengelompokan didefinisikan sebagai berikut:
<group ranges> := <range limit> [/'<label>'] | <range limit> [/'<label>'], <group ranges>
<range limit> := (<number> | <date> | '<string>' | BEFORE('<string>') | AFTER('<string>'))
Kolom <GROUP ON> dapat menjadi pengidentifikasi reguler atau dibatasi untuk properti di penyimpanan properti.
Rentang grup <opsional> adalah daftar satu atau beberapa nilai (angka, tanggal, atau string) yang digunakan untuk membaru hasil menjadi grup. Batas rentang <> mengidentifikasi titik pembagian dalam tataan hasil yang dikembalikan, dan
Grup hasil pertama mencakup item dengan nilai minimum yang mungkin untuk properti yang ditentukan hingga tetapi tidak termasuk batas rentang pertama. Grup ini dapat dirujuk dengan kata kunci MINVALUE. Grup kedua dapat dirujuk dengan penentu batas rentang itu sendiri dan menyertakan item yang nilainya untuk properti yang ditentukan sama dengan atau lebih besar dari batas rentang. Item apa pun yang tidak memiliki nilai untuk properti yang ditentukan dikembalikan terakhir dan dapat dirujuk dengan kata kunci NULL.
Misalnya, batas rentang '2006-01-01' untuk properti System.DateCreated membagi hasil yang ditetapkan menjadi item dengan tanggal sebelum 2006-01-01 (Grup MINVALUE), item dengan tanggal pada atau setelah 2006-01-01 (grup 2006-01-01), dan item tanpa tanggal (grup NULL).
Dalam setiap grup, hasilnya diurutkan menurut nilai di kolom GROUP ON secara default. Klausa ORDER BY opsional dapat berisi penentu arah asc untuk naik (rendah ke tinggi) atau DESC untuk turun (tinggi ke rendah), dan klausa ORDER IN GROUP BY dapat memesan setiap grup menggunakan aturan yang berbeda. Lihat bagian Grup Urutan di bawah ini untuk informasi selengkapnya.
Rentang grup
Tabel berikut menunjukkan bagaimana hasil dibagi menjadi beberapa grup berdasarkan batas rentang:
| Contoh ( kolom<> [rentang grup]) | Hasil |
|---|---|
| System.Size [1000, 5000] | Hasil dikelompokkan ke dalam empat wadah: MINVALUE: Ukuran < 1000 1000: 1000 <= Ukuran < 5000 5000: Ukuran >= 5000 NULL: Tidak ada nilai untuk Ukuran |
| System.Author [BEFORE('m'),AFTER('r')] | Hasil dikelompokkan ke dalam empat wadah: MINVALUE: Penulis < karakter sebelum "m" m: karakter sebelum "m" <= Penulis < karakter setelah "r" r: karakter setelah "r" <= Penulis NULL: Tidak ada nilai untuk Penulis |
| System.Author [MINVALUE/'a to l',"m"/'m to z'] | Hasil dikelompokkan ke dalam tiga wadah: a ke l: Penulis < "m" m ke z: "m" <= Penulis NULL: Tidak ada nilai untuk Penulis |
| System.DateCreated ['2005-1-01','2006-6-01'] | Hasil dikelompokkan ke dalam empat wadah: MINVALUE: DateCreated < 2005-1-01 2005-1-01: 2005-1-01 <= DateCreated < 2006-6-01 2006-1-01: DateCreated >= 2006-6-01 NULL: Tidak ada nilai untuk DateCreated |
Penting
Salah: GROUP ON System.Author['m','z','a']
Benar: GROUP ON System.Author['a','m','z']
Grup pelabelan
Untuk meningkatkan keterbacaan, Anda dapat melabeli grup menggunakan sintaks berikut:
GROUP ON <column> [<range limit>/'<label>',<range limit>/'<label>']
Label dipisahkan dari batas rentang dengan tanda garis miring dan diapit dalam tanda kutip tunggal. Jika Anda tidak menentukan label, nama grup adalah string batas rentang.
Berikut ini adalah contoh grup pelabelan:
GROUP ON System.Size [(MINVALUE/'Small','100')/'Medium','50000'/'Large']
OVER (SELECT System.Size FROM SystemIndex)
Di Windows 7 atau yang lebih baru, Anda juga dapat menggunakan label generik [OTHER] untuk menggabungkan beberapa rentang pengelompokan. Hasil dari semua grup yang diidentifikasi dengan label ini akan digabungkan ke dalam satu grup dengan label ini. Grup hasil ini dikembalikan setelah semua grup lain kecuali untuk grup NULL. Grup NULL berisi hasil untuk item yang tidak memiliki nilai untuk properti yang ditentukan. Sebelum Windows 7, label [OTHER] diperlakukan seperti label grup lainnya.
Kode berikut adalah contoh penggunaan label [OTHER] untuk grup yang akan dibuat di Windows 7 atau yang lebih baru:
GROUP ON System.Author ['0', 'A'/'[OTHER]', 'I', 'Q', 'W'/'[OTHER]', 'Y']
OVER (SELECT System.DateCreated FROM SystemIndex)
Tabel berikut ini memperlihatkan grup yang akan dibuat oleh kode pengelompokan sebelumnya di Windows 7 atau yang lebih baru.
| Kelompok | System.Author | System.FileName |
|---|---|---|
| 0 | 1Bill | Lorem.docx |
| Q | Ratu | Ipsum.docx |
| Robin | dolor.docx | |
| Y | Zara | amet.docx |
| [LAINNYA] | Abner | nonummy.docx |
| Bob | laoreet.docx | |
| Xaria | magna.docx | |
| NULL | aliquam.docx |
Mengurutkan grup
Ada tiga cara untuk memesan item dalam grup:
- Urutan default: Jika Anda tidak menentukan sebaliknya, hasilnya diurutkan berdasarkan nilai di kolom GROUP ON, dalam urutan naik.
- ORDER BY: Anda dapat menentukan urutan turun dalam klausa ORDER BY. Anda harus mengurutkan hasil berdasarkan kolom GROUP ON.
- ORDER IN GROUP BY: Anda dapat menentukan urutan yang berbeda untuk setiap grup. Jika Anda mengelompokkan System.Kind , Anda dapat memesan dokumen dengan System.Author dan musik dengan System.Music.Artist.
Untuk informasi selengkapnya tentang pengurutan hasil, lihat Klausa ORDER BY dan halaman referensi ORDER IN GROUP.
Grup berlapis
Anda dapat menumpuk grup dengan beberapa klausa GROUP ON. Urutan yang ditentukan dalam kueri secara langsung tercermin dalam hierarki grup output, seperti yang diperlihatkan dalam contoh berikut.
GROUP ON <System.Kind>
OVER (GROUP ON <System.Author>
OVER (SELECT <System.DateCreated>))
| System.Kind | System.Author | System.DateCreated |
|---|---|---|
| Dokumen | Willa | 2006-01-02 |
| 2006-01-05 | ||
| Zara | 2007-06-02 | |
| 2007-09-10 | ||
| Komunikasi | Abner | 2006-04-16 |
| Jean | 2007-02-20 | |
| Willa | 2006-10-15 | |
| Zara | 2008-01-02 |
Pengelompokan pada properti vektor
Pengelompokan pada properti vektor, properti yang dapat berisi satu atau beberapa nilai secara bersamaan, membandingkan nilai vektor satu per satu secara default. Misalnya, jika ada satu dokumen, Lorem.docx, dengan properti System.Author sebagai "Theresa; Zara" dan dokumen lain, Ipsum.docx, dengan properti System.Author sebagai "Zara", kueri mengembalikan tataan hasil dalam dua grup seperti yang ditunjukkan di sini:
GROUP ON <System.Author>
OVER (SELECT <System.FileName>)
| System.Author | System.FileName |
|---|---|
| Theresa | Lorem.docx |
| Zara | Lorem.docx |
| Ipsum.docx |
Seperti yang Anda lihat, pengelompokan pada properti vektor mengembalikan baris duplikat. Lorem.docx muncul dua kali karena memiliki dua penulis.
Contoh lainnya
GROUP ON System.Photo.ISOSpeed [0,10,100]
OVER (SELECT System.ItemName, System.Size, System.ItemUrl FROM SystemIndex)
GROUP ON System.DateCreated['2005/01/01 00:00:00', '2005/12/30 23:00:00']
OVER (SELECT System.ItemName, System.Size, System.ItemUrl FROM SystemIndex)
GROUP ON System.Author ORDER BY System.Author DESC
OVER (GROUP ON System.DateCreated ORDER BY System.DateCreated ASC
OVER (SELECT System.FileName, System.DateCreated, System.Size FROM SystemIndex
WHERE CONTAINS(*, 'text')))
GROUP ON System.ItemName [before('a'), 'a', before ('c'), 'd', after('d')]
OVER (SELECT System.ItemName, System.ItemUrl FROM SystemIndex ORDER BY System.ItemName)
GROUP ON System.ItemNameDisplay ['a' / 'col_a','c' / 'col_c']
OVER (SELECT System.ItemNameDisplay FROM SystemIndex
ORDER BY System.ItemNameDisplay)
GROUP ON System.Size[1,2]
OVER (GROUP ON System.Author['a','f','mc','x']
OVER (GROUP ON System.DateCreated['2005/07/25 07:00:00', '2005/08/25 07:00:00']
ORDER BY System.DateCreated DESC
OVER (SELECT System.FileName FROM SystemIndex
WHERE CONTAINS('text'))))
Topik terkait