次の方法で共有


GROUP ON ...オーバー。。。陳述

The GROUP ON...オーバー。。。ステートメントは、指定された列とオプションのグループ化範囲に基づいて検索結果がグループに分割される階層的な行セットを返します。 System.Kind 列でグループ化すると、結果セットは複数のグループ (ドキュメント用、通信用など) に分割されます。 System.Size でグループ化し、範囲を 100 KB にグループ化すると、結果セットは 3 つのグループに分けられます。サイズが 100 KB < 項目、サイズが >= 100 KB の項目、およびサイズ値のない項目です。 関数を使用してグループ化を集計することもできます。

このトピックでは、次のテーマについて説明します。

構文

GROUP ON ...オーバー。。。ステートメントには次の構文があります。

GROUP ON <column> ['['<group ranges>']']] 
[AGGREGATE <aggregate_function>] 
[ORDER BY <column> [<direction>]] | [ORDER IN GROUP '<group name>' BY <column> [<direction>]]
    OVER (GROUP ON... | SELECT... ] )

グループ化範囲は次のように定義されます。

<group ranges> := <range limit> [/'<label>'] | <range limit> [/'<label>'], <group ranges>
<range limit> := (<number> | <date> | '<string>' | BEFORE('<string>') | AFTER('<string>')) 

GROUP ON <列> は、プロパティ ストア内のプロパティに 、通常の識別子または区切り 識別子にすることができます。

オプション <グループ範囲> は、結果をグループに分割するために使用される 1 つ以上の値 (数値、日付、または文字列) のリストです。 <範囲制限> 返された結果セット内の除算ポイントを識別し、

結果の最初のグループには、指定したプロパティの最小値を持つ項目が含まれますが、最初の範囲の制限は含まれません。 このグループは MINVALUE キーワードを使用して参照できます。 2 番目のグループは、範囲制限指定子自体と共に参照でき、指定したプロパティの値が範囲の制限以上の項目が含まれます。 指定したプロパティの値を持たない項目はすべて最後に返され、NULL キーワードで参照できます。

たとえば、次のようになります。 System.DateCreated プロパティの範囲制限 '2006-01-01' は、結果セットを 2006-01-01 より前の日付のアイテムに分割します (MINVALUE グループ)、日付が 2006-01-01 (2006-01-01 グループ) 以降のアイテム、および日付のないアイテム (NULL グループ)。

各グループ内では、結果は既定で GROUP ON 列の値で並べ替えられます。 オプションの ORDER BY 句には、昇順 (低から高) または降順 (高から低) の DESC の方向指定子を含めることができます。また、ORDER IN GROUP BY 句は、異なる規則を使用して各グループを並べ替えることができます。 詳細については、以下の「順序付けグループ」セクションを参照してください。

グループ範囲

次の表は、範囲の制限に基づいて結果をグループに分割する方法を示しています。

例 (<列> [グループ範囲]) 結果
System.Size [1000, 5000] 結果は 4 つのバケットにグループ化されます。MINVALUE: サイズ < 1000
1000: 1000 <= サイズ < 5000
5000: サイズ >= 5000
NULL: サイズの値なし
System.Author [BEFORE('m'),AFTER('r')] 結果は 4 つのバケットにグループ化されます。MINVALUE: author < character before "m"
m: "m" <の前に文字を = "r" の後に < 文字を作成する
r: "r" <= Author の後に文字を
NULL: Author の値なし
System.Author [MINVALUE/'a to l',"m"/'m to z'] 結果は 3 つのバケットにグループ化されます。a から l: Author < "m"
m から z: "m" <= Author
NULL: Author の値なし
System.DateCreated ['2005-1-01','2006-6-01'] 結果は 4 つのバケットにグループ化されます。
MINVALUE: DateCreated < 2005-1-01
2005-1-01: 2005-1-01 <= DateCreated < 2006-6-01
2006-1-01: DateCreated >= 2006-6-01
NULL: DateCreated の値なし

 

 

大事な

不正解: GROUP ON System.Author['m','z','a']

正解: GROUP ON System.Author['a','m','z']

 

 

グループのラベル付け

読みやすくするために、次の構文を使用してグループにラベルを付けることができます。

GROUP ON <column> [<range limit>/'<label>',<range limit>/'<label>']

ラベルは範囲制限からスラッシュで区切られ、単一引用符で囲まれます。 ラベルを指定しない場合、グループ名は範囲制限文字列です。

ラベル付けグループの例を次に示します。

GROUP ON System.Size [(MINVALUE/'Small','100')/'Medium','50000'/'Large']
    OVER (SELECT System.Size FROM SystemIndex)

Windows 7 以降では、汎用の [OTHER] ラベルを使用して、複数のグループ範囲を組み合わせることもできます。 このラベルで識別されたすべてのグループの結果は、このラベルを持つ 1 つのグループに結合されます。 この結果のグループは、NULL グループを除く他のすべてのグループの後に返されます。 NULL グループには、指定したプロパティの値を持たないアイテムの結果が含まれます。 Windows 7 より前では、[OTHER] ラベルは他のグループ ラベルと同様に扱われます。

次のコードは、Windows 7 以降で作成されるグループに [OTHER] ラベルを使用する例です。

GROUP ON System.Author ['0', 'A'/'[OTHER]', 'I', 'Q', 'W'/'[OTHER]', 'Y']
    OVER (SELECT System.DateCreated FROM SystemIndex)

次の表は、Windows 7 以降の上記のグループ化コードによって作成されるグループを示しています。

System.Author System.FileName
0 1Bill Lorem.docx
Q 女王 Ipsum.docx
ロビン dolor.docx
Y ザラ amet.docx
[その他] アブナー nonummy.docx
ボブ laoreet.docx
Xaria magna.docx
NULL aliquam.docx

 

グループの順序付け

グループ内のアイテムを並べ替える方法は 3 つあります。

  • 既定の順序: 指定しない場合、結果は GROUP ON 列の値によって昇順に並べ替えられます。
  • ORDER BY: ORDER BY 句では降順を指定できます。 GROUP ON 列で結果を並べ替えなければなりません。
  • ORDER IN GROUP BY: グループごとに異なる順序を指定できます。 System.Kindでグループ化する場合は、System.Author してドキュメントを注文し、System.Music.Artistで音楽を注文できます。

結果の順序付けの詳細については、ORDER BY 句の と ORDER IN GROUP 句の リファレンス ページを参照してください。

グループの入れ子

複数の GROUP ON 句を使用してグループを入れ子にすることができます。 次の例に示すように、クエリで指定された順序は出力グループ階層に直接反映されます。

GROUP ON <System.Kind> 
      OVER (GROUP ON <System.Author> 
                  OVER (SELECT <System.DateCreated>))
System.Kind System.Author System.DateCreated
書類 ウィラ 2006-01-02
2006-01-05
ザラ 2007-06-02
2007-09-10
通信 アブナー 2006-04-16
ジャン 2007-02-20
ウィラ 2006-10-15
ザラ 2008-01-02

 

 

ベクター プロパティでのグループ化

1 つ以上の値を同時に含めることができるベクター プロパティのグループ化では、既定でベクター値が個別に比較されます。 たとえば、1 つのドキュメントがある場合は、System.Author プロパティを "Theresa; と Lorem.docxします。Zara" と別のドキュメント (Ipsum.docx)、System.Author プロパティが "Zara" の場合、クエリは次に示すように 2 つのグループで結果セットを返します。

GROUP ON <System.Author> 
      OVER (SELECT <System.FileName>)
System.Author System.FileName
テレサ Lorem.docx
ザラ Lorem.docx
  Ipsum.docx

 

ご覧のように、ベクター プロパティをグループ化すると、重複する行が返されます。 Lorem.docx には 2 人の作成者が含まれているため、2 回表示されます。

 

その他の例

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

集計関数

ORDER BY 句

ORDER IN GROUP 句 する