GROUP ON ... ATAS... Pernyataan
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 pada kolom System.Kind , kumpulan hasil dibagi menjadi beberapa grup: satu untuk dokumen, satu untuk komunikasi, dan sebagainya. Jika Anda mengelompokkan pada 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
- Mengurutkan Grup
- Grup Berlapis
- Pengelompokan pada Properti Vektor
- Contoh Lainnya
- Topik terkait
Sintaks
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 membalah 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 berdasarkan nilai di kolom GROUP ON secara default. Klausa ORDER BY opsional dapat berisi penentu arah asal ASC untuk naik (rendah ke tinggi) atau DESC untuk turun (tinggi ke rendah), dan klausul ORDER IN GROUP BY dapat mengurutkan setiap grup menggunakan aturan yang berbeda. Lihat bagian Grup Pemesanan 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: Karakter penulis < sebelum "m" m: karakter sebelum "m" <= Karakter penulis < 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 [OTHER] generik 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.
Grup | System.Author | System.FileName |
---|---|---|
0 | 1Bill | Lorem.docx |
Q | Queen | 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 di System.Kind, Anda dapat memesan dokumen berdasarkan System.Author dan musik oleh System.Music.Artist.
Untuk informasi selengkapnya tentang pengurutan hasil, lihat halaman referensi Klausa ORDER BY dan Klausa 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk