Klauzule GROUP
Klauzule GROUP způsobí, že rozhraní WMI vygeneruje jedno oznámení, které představuje skupinu událostí. Reprezentativní oznámení je instance __AggregateEvent systémové třídy. Systémová třída __AggregateEvent obsahuje dvě vlastnosti: reprezentativní a NumberOfEvents. Vlastnost Zástupce je vložený objekt, který obsahuje jednu z instancí přijatých během intervalu seskupení zadaného v klauzuli WITHIN . Pokud je například vygenerována agregační událost, která informuje o událostech úprav instancí, reprezentativní obsahuje jednu instanci třídy __InstanceModificationEvent. Vlastnost NumberOfEvents obsahuje počet událostí přijatých během intervalu seskupení. Interval seskupení určuje časové období po přijetí počáteční události, během které má rozhraní WMI shromažďovat podobné události.
Klauzule GROUP musí obsahovat klauzuli WITHIN, která určuje interval seskupení a může obsahovat klíčové slovo BY nebo HAVING, nebo obojí. Klauzule GROUP se umístí za klauzuli WHERE, jak je znázorněno níže:
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
[HAVING NumberOfEvents operator integer]
Hodnota EventClass je třída události, pro kterou je událost členem, a hodnota je hodnota vlastnosti, pro kterou je požadováno oznámení. Interval je celé číslo bez znaménka, které představuje interval seskupení po přijetí první události. Celé číslo bez znaménka je několik sekund. Seznam vlastností je čárkami oddělený seznam jedné nebo více vlastností, které jsou zahrnuty do třídy událostí; operátor je jakýkoli relační operátor; a celé číslo je celé číslo bez znaménka, které označuje počet událostí.
Při použití klauzule GROUP jsou klauzule WHERE, BY a HAVING volitelné.
Základní použití klauzule GROUP může vyžadovat seskupení událostí v časovém intervalu, který začíná při přijetí první události. Například následující dotaz seskupí všechny e-mailové události odeslané do 5 minut. Místo stránkování uživatele při každém přijetí nového e-mailu může trvalý uživatel tento dotaz použít k informování uživatele pouze v případě, že byl nový e-mail přijat během posledních 5 minut.
SELECT * FROM EmailEvent GROUP WITHIN 300
Pokud jsou požadovány podrobnější informace, události mohou být seskupeny podle jedné nebo více vlastností třídy událostí. Následující dotaz požaduje, aby e-mailové události byly kombinovány s dalšími událostmi, které mají stejnou hodnotu ve vlastnosti Sender:
SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender
Ještě větší úroveň podrobností lze dosáhnout přidáním klauzule WHERE. Například následující dotaz upozorní uživatele na nový e-mail od konkrétního odesílatele, který přišel během posledních 10 minut, v kombinaci s dalšími událostmi, které mají stejnou hodnotu ve vlastnosti Důležitost:
SELECT * FROM EventClass WHERE Sender = "MyBoss"
GROUP WITHIN 300 BY Importance