Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
GRUP ON... ÜZERİNDE... deyimi, arama sonuçlarının belirtilen sütuna ve isteğe bağlı gruplandırma aralıklarına göre gruplara ayrıldığı hiyerarşik bir satır kümesi döndürür. System.Kind sütununu gruplandırıyorsanız sonuç kümesi birden çok gruba ayrılır: biri belgeler için, biri iletişimler için vb. System.Size ve grup aralığı 100 KB olan gruplandırdığınızda sonuç kümesi üç gruba ayrılır: boyut < 100 KB olan öğeler, boyut öğeleri >= 100 KB ve boyut değeri olmayan öğeler. Gruplandırmaları işlevlerle de toplayabilirsiniz.
Bu konu aşağıdaki konuları kapsar:
- Sözdizimi
- Grup Aralıklarını
- Etiketleme Grupları
- Grup Sıralama
- grupları iç içe
- Vektör Özelliklerinde Gruplandırma
- Diğer Örnekler
- İlgili konular
Sözdizimi
GRUP ON ... ÜZERİNDE... deyimi aşağıdaki söz dizimine sahiptir:
GROUP ON <column> ['['<group ranges>']']]
[AGGREGATE <aggregate_function>]
[ORDER BY <column> [<direction>]] | [ORDER IN GROUP '<group name>' BY <column> [<direction>]]
OVER (GROUP ON... | SELECT... ] )
burada gruplandırma aralıkları aşağıdaki gibi tanımlanır:
<group ranges> := <range limit> [/'<label>'] | <range limit> [/'<label>'], <group ranges>
<range limit> := (<number> | <date> | '<string>' | BEFORE('<string>') | AFTER('<string>'))
GROUP ON <sütunu>, özellik deposundaki bir özellik için normal veya sınırlandırılmış tanımlayıcı olabilir.
İsteğe bağlı <grup aralığı>, sonuçları gruplara bölmek için kullanılan bir veya daha fazla değerin (sayı, tarih veya dize) listesidir. <aralık sınırı> döndürülen sonuç kümesinde bir bölme noktası tanımlar ve
İlk sonuç grubu, belirtilen özellik için en düşük olası değere sahip öğeleri içerir ancak ilk aralık sınırı dahil değildir. Bu gruba MINVALUE anahtar sözcüğüyle başvurabilirsiniz. İkinci gruba aralık sınırı tanımlayıcısının kendisiyle başvurulabilir ve belirtilen özellik değeri aralık sınırına eşit veya ondan büyük olan öğeleri içerir. Belirtilen özellik için değeri olmayan öğeler en son döndürülür ve NULL anahtar sözcüğüyle başvurulabilir.
Örneğin, System.DateCreated özelliği için '2006-01-01' aralık sınırı, sonuç kümesini 2006-01-01 tarihinden önceki tarihlere sahip öğelere böler (MINVALUE grubu), 2006-01-01 (2006-01-01 grubu) tarihinde veya sonrasında tarihleri olan öğeler ve tarihi olmayan öğeler (NULL grubu).
Her grubun içinde, sonuçlar varsayılan olarak GROUP ON sütunundaki değerlere göre sıralanır. İsteğe bağlı ORDER BY yan tümcesi artan (düşükten yükseke) için ASC veya azalan (yüksekten düşüğe) için DESC yön tanımlayıcısı içerebilir ve ORDER IN GROUP BY yan tümcesi her grubu farklı kurallar kullanarak sıralayabilir. Daha fazla bilgi için aşağıdaki Grup Sıralama bölümüne bakın.
Grup aralıkları
Aşağıdaki tabloda sonuçların aralık sınırlarına göre gruplara nasıl bölündüğü gösterilmektedir:
| Örnek (<sütun> [grup aralıkları]) | Sonuç |
|---|---|
| System.Size [1000, 5000] | Sonuçlar dört demet halinde gruplandırılır: MINVALUE: Boyut < 1000 1000: 1000 <= Boyut < 5000 5000: Boyut >= 5000 NULL: Boyut için değer yok |
| System.Author [BEFORE('m'),AFTER('r')] | Sonuçlar dört demet halinde gruplandırılır: MINVALUE: Author < character before "m" < karakter = "r" sonrasındaki yazar < karakter < karakter NULL: Yazar için değer yok |
| System.Author [MINVALUE/'a to l',"m"/'m to z'] | Sonuçlar üç demet halinde gruplandırılır: a ile l : Yazar < "m" m-z: "m" <= Yazar NULL: Yazar için değer yok |
| System.DateCreated ['2005-1-01','2006-6-01'] | Sonuçlar dört demet halinde gruplandırılır: MINVALUE: DateCreated < 2005-1-01 2005-1-01: 2005-1-01 <= Tarih2006-6-01 < 2006-1-01: DateCreated >= 2006-6-01 NULL: DateCreated için değer yok |
Önemli
Yanlış: GROUP ON System.Author['m','z','a']
Doğru: GROUP ON System.Author['a','m','z']
Grupları etiketleme
Okunabilirliği geliştirmek için grupları aşağıdaki söz dizimini kullanarak etiketleyebilirsiniz:
GROUP ON <column> [<range limit>/'<label>',<range limit>/'<label>']
Etiket, aralık sınırından eğik çizgi işaretiyle ayrılır ve tek tırnak içine alınır. Bir etiket belirtmezseniz, grup adı aralık sınırı dizesidir.
Aşağıda grup etiketleme örneği verilmiştir:
GROUP ON System.Size [(MINVALUE/'Small','100')/'Medium','50000'/'Large']
OVER (SELECT System.Size FROM SystemIndex)
Windows 7 veya sonraki sürümlerde, birden çok gruplandırma aralığını birleştirmek için genel bir [OTHER] etiketi de kullanabilirsiniz. Bu etiketle tanımlanan tüm grupların sonuçları, bu etikete sahip tek bir grupta birleştirilir. Bu sonuç grubu, NULL grubu dışında diğer tüm gruplardan sonra döndürülür. NULL grubu, belirtilen özellik için değeri olmayan öğelerin sonuçlarını içerir. Windows 7'nin öncesinde [OTHER] etiketi diğer grup etiketleri gibi kabul edilir.
Aşağıdaki kod, Windows 7 veya sonraki sürümlerde oluşturulacak gruplar için [OTHER] etiketinin kullanılmasına bir örnektir:
GROUP ON System.Author ['0', 'A'/'[OTHER]', 'I', 'Q', 'W'/'[OTHER]', 'Y']
OVER (SELECT System.DateCreated FROM SystemIndex)
Aşağıdaki tabloda, Windows 7 veya sonraki sürümlerde önceki gruplandırma kodu tarafından oluşturulacak gruplar gösterilmektedir.
| Grup | System.Author | System.FileName |
|---|---|---|
| 0 | 1Bill | Lorem.docx |
| Q | Kraliçe | Ipsum.docx |
| Kızılgerdan | dolor.docx | |
| Y | Zara | amet.docx |
| [DİĞER] | Abner | nonummy.docx |
| Bob | laoreet.docx | |
| Xaria | magna.docx | |
| NULL | aliquam.docx |
Grupları sıralama
Öğeleri gruplar halinde sıralamanın üç yolu vardır:
- Varsayılan sıralama: Aksini belirtmezseniz, sonuçlar GROUP ON sütunundaki değerlere göre artan düzende sıralanır.
- ORDER BY: ORDER BY yan tümcesinde azalan düzen belirtebilirsiniz. Sonuçları GROUP ON sütununa göre sıralamanız gerekir.
- ORDER IN GROUP BY: Her grup için farklı bir sıra belirtebilirsiniz. System.Kindüzerinde gruplandırıyorsanız, System.Music.Artisttarafından system.author ve müzik belgeleri sıralayabilirsiniz.
Sonuçları sıralama hakkında daha fazla bilgi için ORDER BY Yan Tümcesi ve ORDER IN GROUP Yan Tümcesi başvuru sayfalarına bakın.
Grupları iç içe yerleştirme
Grupları birden çok GROUP ON yan tümcesiyle iç içe yerleştirebilirsiniz. Sorguda belirtilen sıra, aşağıdaki örnekte gösterildiği gibi çıkış grubu hiyerarşisine doğrudan yansıtılır.
GROUP ON <System.Kind>
OVER (GROUP ON <System.Author>
OVER (SELECT <System.DateCreated>))
| System.Kind | System.Author | System.DateCreated |
|---|---|---|
| evrak | Willa | 2006-01-02 |
| 2006-01-05 | ||
| Zara | 2007-06-02 | |
| 2007-09-10 | ||
| Iletişim | Abner | 2006-04-16 |
| Jean | 2007-02-20 | |
| Willa | 2006-10-15 | |
| Zara | 2008-01-02 |
Vektör özelliklerinde gruplandırma
Vektör özelliklerinde gruplandırma, aynı anda bir veya daha fazla değer içerebilen özellikler, vektör değerlerini varsayılan olarak ayrı ayrı karşılaştırır. Örneğin, Lorem.docxsystem.author özelliği "Theresa; Zara" ve system.author özelliği "Zara" olan Ipsum.docxbaşka bir belge, sorgu burada gösterildiği gibi sonuç kümesini iki grupta döndürür:
GROUP ON <System.Author>
OVER (SELECT <System.FileName>)
| System.Author | System.FileName |
|---|---|
| Theresa | Lorem.docx |
| Zara | Lorem.docx |
| Ipsum.docx |
Gördüğünüz gibi, vektör özelliklerinde gruplandırma yinelenen satırları döndürür. Lorem.docx iki kez görünür çünkü iki yazarı vardır.
Diğer örnekler
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'))))
İlgili konular