GRUPPIEREN NACH ... ÜBER... Aussage
Die GRUPPE AKTIVIERT... ÜBER... -Anweisung gibt ein hierarchisches Rowset zurück, in dem Suchergebnisse basierend auf einer angegebenen Spalte und optionalen Gruppierungsbereichen in Gruppen unterteilt werden. Wenn Sie in der Spalte System.Kind Spalte gruppieren, wird das Resultset in mehrere Gruppen unterteilt: eine für Dokumente, eine für Kommunikation usw. Wenn Sie nach System.Size- und gruppenbereich 100 KB gruppieren, wird das Resultset in drei Gruppen unterteilt: Elemente der Größe < 100 KB, Elemente der Größe >= 100 KB und Elemente ohne Größenwert. Sie können auch Gruppierungen mit Funktionen aggregieren.
In diesem Thema werden die folgenden Themen behandelt:
- Syntax
- Gruppenbereiche
- Bezeichnungsgruppen
- Sortieren von Gruppen
- Schachtelungsgruppen
- Gruppierung für Vektoreigenschaften
- Weitere Beispiele
- Verwandte Themen
Syntax
DIE GRUPPE AM ... ÜBER... Anweisung weist die folgende Syntax auf:
GROUP ON <column> ['['<group ranges>']']]
[AGGREGATE <aggregate_function>]
[ORDER BY <column> [<direction>]] | [ORDER IN GROUP '<group name>' BY <column> [<direction>]]
OVER (GROUP ON... | SELECT... ] )
wobei Gruppierungsbereiche wie folgt definiert sind:
<group ranges> := <range limit> [/'<label>'] | <range limit> [/'<label>'], <group ranges>
<range limit> := (<number> | <date> | '<string>' | BEFORE('<string>') | AFTER('<string>'))
Die <Spalte "GROUP ON"> kann ein regulärer oder getrennter Bezeichner für eine Eigenschaft im Eigenschaftenspeicher sein.
Der optionale <Gruppenbereich> ist eine Liste mit mindestens einem Wert (Zahl, Datum oder Zeichenfolge), die zum Aufteilen der Ergebnisse in Gruppen verwendet wird. Der <Bereichsgrenzwert> einen Divisionspunkt im zurückgegebenen Resultset identifiziert, und die
Die erste Gruppe von Ergebnissen enthält Elemente mit dem minimalen möglichen Wert für die angegebene Eigenschaft bis hin zum ersten Bereichsgrenzwert. Auf diese Gruppe kann mit dem MINVALUE-Schlüsselwort verwiesen werden. Die zweite Gruppe kann mit dem Bereichsgrenzbezeichner selbst bezeichnet werden und enthält Elemente, deren Wert für die angegebene Eigenschaft gleich oder größer als der Bereichsgrenzwert ist. Alle Elemente, die keinen Wert für die angegebene Eigenschaft haben, werden zuletzt zurückgegeben und können mit dem schlüsselwort NULL verwiesen werden.
Beispiel: ein Bereichslimit von "2006-01-01" für die System.DateCreated-Eigenschaft teilt das Resultset in Elemente mit Datumsangaben vor 2006-01-01 (MINWERT-Gruppe), Elemente mit Datumsangaben am oder nach 2006-01-01 (2006-01-01-01-Gruppe) und Elemente ohne Datum (NULL Gruppe).
Innerhalb jeder Gruppe werden die Ergebnisse standardmäßig nach den Werten in der SPALTE GROUP ON sortiert. Die optionale ORDER BY--Klausel kann einen Richtungsbezeichner von ASC für aufsteigend (niedrig bis hoch) oder DESC für absteigend (hoch bis niedrig) enthalten, und die ORDER IN GROUP BY Klausel kann jede Gruppe mithilfe unterschiedlicher Regeln anordnen. Weitere Informationen finden Sie im Abschnitt Sortieren von Gruppen weiter unten.
Gruppenbereiche
In der folgenden Tabelle wird veranschaulicht, wie Die Ergebnisse auf der Grundlage der Bereichsgrenzwerte in Gruppen unterteilt werden:
Beispiel (<Spalte> [Gruppenbereiche]) | Ergebnis |
---|---|
System.Size [1000, 5000] | Die Ergebnisse werden in vier Buckets gruppiert: MINVALUE-: Größe < 1000 1000: 1000 <= Größe < 5000 5000: Größe >= 5000 NULL: Kein Wert für Größe |
System.Author [BEFORE('m');AFTER('r')] | Die Ergebnisse werden in vier Buckets gruppiert: MINVALUE: Author < Zeichen vor "m" m: Zeichen vor "m" <= Author < Zeichen nach "r" r: Zeichen nach "r" <= Autor NULL: Kein Wert für Author |
System.Author [MINVALUE/'a to l',"m"/'m to z'] | Ergebnisse werden in drei Buckets gruppiert: a bis l: Author < "m" m bis z: "m" <= Autor NULL: Kein Wert für Author |
System.DateCreated ['2005-1-01','2006-6-01'] | Die Ergebnisse werden in vier Buckets gruppiert: MINWERT: DateCreated < 2005-1-01 2005-1-01: 2005-1-01 <= DateCreated < 2006-6-01 2006-1-01: DateCreated >= 2006-6-01 NULL: Kein Wert für DateCreated |
Wichtig
Falsch: GROUP ON System.Author['m','z','a']
Richtig: GROUP ON System.Author['a','m','z']
Bezeichnungsgruppen
Um die Lesbarkeit zu verbessern, können Sie Gruppen mit der folgenden Syntax beschriften:
GROUP ON <column> [<range limit>/'<label>',<range limit>/'<label>']
Die Beschriftung wird von der Bereichsgrenze mit einem Schrägstrich getrennt und in einfache Anführungszeichen eingeschlossen. Wenn Sie keine Bezeichnung angeben, ist der Gruppenname die Zeichenfolge für den Bereichsgrenzwert.
Im Folgenden sehen Sie ein Beispiel für Bezeichnungsgruppen:
GROUP ON System.Size [(MINVALUE/'Small','100')/'Medium','50000'/'Large']
OVER (SELECT System.Size FROM SystemIndex)
In Windows 7 oder höher können Sie auch eine generische [OTHER]-Bezeichnung verwenden, um mehrere Gruppierungsbereiche zu kombinieren. Ergebnisse aller mit dieser Bezeichnung identifizierten Gruppen werden in einer Gruppe mit dieser Bezeichnung kombiniert. Diese Ergebnisgruppe wird nach allen anderen Gruppen zurückgegeben, mit Ausnahme der NULL- Gruppe. Die NULL- Gruppe enthält Ergebnisse für Elemente, die keinen Wert für die angegebene Eigenschaft aufweisen. Vor Windows 7 wird die [OTHER]-Bezeichnung wie jede andere Gruppenbezeichnung behandelt.
Der folgende Code ist ein Beispiel für die Verwendung der [OTHER]-Bezeichnung für Gruppen, die in Windows 7 oder höher erstellt werden würden:
GROUP ON System.Author ['0', 'A'/'[OTHER]', 'I', 'Q', 'W'/'[OTHER]', 'Y']
OVER (SELECT System.DateCreated FROM SystemIndex)
In der folgenden Tabelle sind die Gruppen aufgeführt, die durch den vorherigen Gruppierungscode in Windows 7 oder höher erstellt werden.
Gruppe | System.Author | System.FileName |
---|---|---|
0 | 1Bill | Lorem.docx |
Q | Königin | Ipsum.docx |
Rotkehlchen | dolor.docx | |
Y | Zara | amet.docx |
[SONSTIGE] | Abner | nonummy.docx |
Bubikopf | laoreet.docx | |
Xaria | magna.docx | |
NULL- | aliquam.docx |
Sortieren von Gruppen
Es gibt drei Möglichkeiten zum Sortieren von Elementen in Gruppen:
- Standardreihenfolge: Wenn Sie andernfalls nicht angeben, werden die Ergebnisse nach den Werten in der SPALTE GROUP ON in aufsteigender Reihenfolge sortiert.
- ORDER BY: Sie können absteigende Reihenfolge in einer ORDER BY-Klausel angeben. Sie müssen die Ergebnisse nach der SPALTE GROUP ON sortieren.
- REIHENFOLGE IN GRUPPE NACH: Sie können für jede Gruppe eine andere Reihenfolge angeben. Wenn Sie auf System.Kind-gruppieren, können Sie Dokumente nach System.Author und Musik System.Music.Artistbestellen.
Weitere Informationen zum Sortieren von Ergebnissen finden Sie in der ORDER BY-Klausel und ORDER IN GROUP-Klausel Referenzseiten.
Verschachtelungsgruppen
Sie können Gruppen mit mehreren GROUP ON-Klauseln verschachteln. Die in der Abfrage angegebene Reihenfolge wird direkt in der Ausgabegruppenhierarchie wiedergegeben, wie im folgenden Beispiel gezeigt.
GROUP ON <System.Kind>
OVER (GROUP ON <System.Author>
OVER (SELECT <System.DateCreated>))
System.Kind | System.Author | System.DateCreated |
---|---|---|
Urkunden | Willa | 2006-01-02 |
2006-01-05 | ||
Zara | 2007-06-02 | |
2007-09-10 | ||
Kommunikationen | Abner | 2006-04-16 |
Jean | 2007-02-20 | |
Willa | 2006-10-15 | |
Zara | 2008-01-02 |
Gruppieren nach Vektoreigenschaften
Beim Gruppieren nach Vektoreigenschaften, Eigenschaften, die einen oder mehrere Werte gleichzeitig enthalten können, werden die Vektorwerte standardmäßig einzeln verglichen. Wenn z. B. ein Dokument vorhanden ist, Lorem.docxmit der System.Author-Eigenschaft als "Theresa; Zara" und ein weiteres Dokument, Ipsum.docx, mit der System.Author-Eigenschaft als "Zara" gibt die Abfrage das Resultset in zwei Gruppen zurück, wie hier gezeigt:
GROUP ON <System.Author>
OVER (SELECT <System.FileName>)
System.Author | System.FileName |
---|---|
Theresa | Lorem.docx |
Zara | Lorem.docx |
Ipsum.docx |
Wie Sie sehen können, gibt die Gruppierung nach Vektoreigenschaften doppelte Zeilen zurück. Lorem.docx wird zweimal angezeigt, da es zwei Autoren hat.
Weitere Beispiele
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'))))
Verwandte Themen