GROUP 子句
GROUP 子句會導致 WMI 產生單一通知來代表事件群組。 代表通知是 __AggregateEvent 系統類別的實例。 __AggregateEvent 系統類別包含兩個屬性:Representative 和 NumberOfEvents。 Representative 屬性是內嵌物件,其中包含在 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