Предложение HAVING
Предложение HAVING используется для фильтрации событий, полученных во время интервала группировки, указанного в предложении IN. Например, инструкцию SELECT можно создать так, чтобы она не возвращала ничего, если не было не менее 5 событий в течение последних 30 секунд интервала.
Предложение IN следует сразу же в инструкции SELECT SELECT после предложения GROUP. Предложение HAVING работает с свойством NumberOfEvents системного класса __AggregateEvent, из которого группа, созданная предложением GROUP, является членом. Предложение HAVING может использовать все стандартные реляционные операторы.
Синтаксис выглядит следующим образом:
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
HAVING NumberOfEvents operator constant
Значение EventClass — это класс событий, в котором событие является членом, и значение является значением свойства, для которого требуется уведомление. Интервал — это целое число без знака, представляющее интервал группировки (в секундах) после получения первого события. Список свойств — это список с разделителями-запятыми одного или нескольких свойств, включенных в класс событий. Оператор является любым реляционным оператором. Константное значение — любое целое число без знака, указывающее количество событий, используемых для фильтрации.
При использовании предложения HAVING предложения WHERE и BY являются необязательными.
Следующий запрос событий запрашивает уведомления о классе EmailEvent группироваться в одно событие 300 секунд после первого события, которое WMI получает. Кроме того, запрос запрашивает __AggregateEvent экземпляр должен быть доставлен только в том случае, если WMI получает более пяти событий электронной почты в течение 300 секунд.
SELECT * FROM EmailEvent GROUP WITHIN 300 HAVING NumberOfEvents > 5
В следующем примере все события, полученные в течение 600 секунд (т. е. 10 минут) TargetInstance.свойство SourceName. В этом примере статистические события доставляются только в том случае, если число событий Win32_NTLogEvent, полученных из того же источника, превышает 25. Помните, что оператор ISA вызывает свойство TargetInstance системного класса __InstanceCreationEvent для представления экземпляра класса Win32_NTLogEvent.
SELECT * FROM __InstanceCreationEvent
WHERE TargetInstance ISA "Win32_NTLogEvent"
GROUP WITHIN 600 BY TargetInstance.SourceName
HAVING NumberOfEvents > 25