Предложение GROUP
Предложение GROUP приводит к созданию единого уведомления WMI для представления группы событий. Репрезентативное уведомление является экземпляром системного класса __AggregateEvent. Системный класс __AggregateEvent содержит два свойства: Репрезентативный и NumberOfEvents. Свойство Репрезентативный является внедренным объектом, который содержит один из экземпляров, полученных во время интервала группировки, указанного в предложении IN. Например, если агрегатное событие создается для уведомления о событиях изменения экземпляра, Репрезентативный содержит один экземпляр класса __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 минут, в сочетании с другими событиями, имеющими то же значение в свойстве Значение:
SELECT * FROM EventClass WHERE Sender = "MyBoss"
GROUP WITHIN 300 BY Importance