勇芳软件工作室.汉化:  Windows Management Instrumentation > WQL (SQL for WMI) >

GROUP Clause

Previous pageReturn to chapter overviewNext page

GROUP子句使WMI生成单个通知来表示一组事件。代表通知是__AggregateEvent系统类的一个实例。__AggregateEvent系统类包含两个属性:代表NumberOfEvents.代表属性是一个嵌入对象,其中包含在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值是事件是其成员的事件类,value是需要通知的属性的值。间隔是一个无符号整数,表示接收第一个事件后的分组间隔。无符号整数是几秒钟。属性列表是以事件类中包含的一个或多个属性的逗号分隔列表; 操作者是任何关系运算符; 整数是一个无符号的32位整数,表示事件数。

 

使用GROUP子句时,WHERE,BY和HAVING子句是可选的。

 

GROUP子句的基本用法可能会在收到第一个事件的时间间隔内请求一组事件。例如,以下查询将在5分钟内发送的所有电子邮件事件组合。每次收到一封新的电子邮件时,不用分页用户,所以永久消费者可能会使用此查询通知用户,只有在最近5分钟内收到新的电子邮件。

 

SELECT * FROM EmailEvent GROUP WITHIN 300

 

如果需要更详细的信息,事件可以由事件类的一个或多个属性分组。以下查询请求电子邮件事件与寄件人属性中具有相同值的其他事件相结合:

 

SELECT * FROM EmailEvent GROUP WITHIN 300 BY Sender

 

通过添加WHERE子句可以获得更大的细节。例如,以下查询会将来自特定发件人的最新10分钟内的新电子邮件通知给用户,并结合重要性属性中具有相同值的其他事件。

 

SELECT * FROM EventClass WHERE Sender = "MyBoss"

GROUP WITHIN 300 BY Importance