GRUPLA... ÜZERİNDE... beyanat

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 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'))))   

Toplama İşlevleri

ORDER BY Yan Tümcesi

ORDER IN GROUP Yan Tümcesi