GROUP 子句

GROUP 子句會導致 WMI 產生單一通知來代表事件群組。 代表性通知是 __AggregateEvent 系統類別的實例。 __AggregateEvent系統類別包含兩個屬性:代表NumberOfEventsRepresentative屬性是内嵌物件,其中包含在 WITHIN 子句中指定的群組間隔期間收到的其中一個實例。 例如,如果產生匯總事件來通知實例修改事件, 代表 就會包含 __InstanceModificationEvent 類別的一個實例。 NumberOfEvents屬性包含群組間隔期間收到的事件數目。 群組間隔會指定在接收初始事件之後的時間週期,WMI 應該收集類似的事件。

GROUP 子句必須包含 WITHIN 子句,才能指定群組間隔,而且可以包含 BY 或 HAVING 關鍵字,或兩者。 GROUP 子句放在 WHERE 子句之後,如下所示:

SELECT * FROM EventClass [WHERE property = value] 
    GROUP WITHIN interval [BY property_list]
    [HAVING NumberOfEvents operator integer]

EventClass值是事件為成員的事件類別,而值是需要通知之屬性的值。 間隔是一個不帶正負號的整數,代表接收第一個事件之後的群組間隔。 不帶正負號的整數是秒數。 屬性清單是事件類別中包含的一或多個屬性的逗號分隔清單; 運算子 是任何關係運算子;和 整數 是無符號的 32 位整數,表示一些事件。

使用 GROUP 子句時,WHERE、BY 和 HAVING 子句是選擇性的。

GROUP 子句的基本用法可能會在收到第一個事件時,于時間間隔內要求事件群組。 例如,下列查詢會將所有電子郵件事件群組在 5 分鐘內傳送。 每當收到新電子郵件時,永久取用者可能會使用此查詢通知使用者,只有在過去 5 分鐘內收到新電子郵件時,才會通知使用者。

SELECT * FROM EmailEvent GROUP WITHIN 300

如果需要更詳細的資訊,事件可以依事件類別的一或多個屬性分組。 下列查詢要求電子郵件事件與 Sender 屬性中具有相同值的其他事件結合:

SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender

新增 WHERE 子句即可達到更詳細的層級。 例如,下列查詢會通知使用者來自過去 10 分鐘內抵達之特定寄件者的新電子郵件,並結合 在 Importance 屬性中具有相同值的其他事件:

SELECT * FROM EventClass WHERE Sender = "MyBoss" 
  GROUP WITHIN 300 BY Importance