HAVING子句用于过滤在WITHIN子句中指定的分组间隔期间接收到的事件。在GROUP子句之后,WITHIN子句立即在SELECT语句中。HAVING子句对__AggregateEvent系统类的NumberOfEvents属性进行操作,其中由GROUP子句创建的组是成员。HAVING子句可以使用所有的标准关系运算符。
语法如下:
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
HAVING NumberOfEvents operator constant
EventClass值是事件是其成员的事件类,value是需要通知的属性的值。间隔是一个无符号整数,表示收到第一个事件后的分组间隔(以秒为单位)。属性列表是以事件类中包含的一个或多个属性的逗号分隔列表。操作员是任何关系运算符。常数值是指示用于过滤的事件数量的任何无符号32位整数。
使用HAVING子句时,WHERE和BY子句是可选的。
以下事件查询请求,在WMI接收的第一个事件后300秒内将EmailEvent类的通知分组为一个事件。此外,查询请求只有在WMI在300秒内收到五个以上的电子邮件事件时才应该发送。
SELECT * FROM EmailEvent GROUP WITHIN 300 HAVING NumberOfEvents > 5
以下示例将通过TargetInstance.SourceName属性分组在600秒(即10分钟)内收到的所有事件。在此示例中,只有从同一来源接收的Win32_NTLogEvent事件的数量超过25时,才会传送聚合事件。请记住,ISA操作员使__InstanceCreationEvent系统类的TargetInstance属性表示Win32_NTLogEvent类的一个实例。
SELECT * FROM __InstanceCreationEvent
WHERE TargetInstance ISA "Win32_NTLogEvent"
GROUP WITHIN 600 BY TargetInstance.SourceName
HAVING NumberOfEvents > 25