共用方式為


HAVING 子句

HAVING 子句是用來篩選在 WITHIN 子句中指定的群組間隔期間所接收的事件,。 例如,可以建構 SELECT 語句,使其不傳回任何專案,除非在過去 30 秒 INTERVAL 內至少有 5 個事件。

WITHIN 子句緊接在 GROUP 子句之後的 SELECT 語句 中。 HAVING 子句會在 __AggregateEvent 系統類別的 NumberOfEvents 屬性上運作,GROUP 子句所建立的群組是成員。 HAVING 子句可以使用所有標準關係運算符。

語法如下:

SELECT * FROM EventClass [WHERE property = value] 
  GROUP WITHIN interval [BY property_list]
  HAVING NumberOfEvents operator constant

EventClass 值是事件所屬的事件類別,而 是需要通知的屬性值。 間隔是一個不帶正負號的整數,表示收到第一個事件之後的群組間隔(以秒為單位)。 屬性清單是事件類別中包含的一或多個屬性的逗號分隔清單。 運算子是任何關係運算符。 常數值是任何不帶正負號的 32 位整數,表示用於篩選的事件數目。

使用 HAVING 子句時,WHERE 和 BY 子句是選擇性的。

下列事件查詢要求在 WMI 收到第一個事件之後,EmailEvent 類別的通知分成一個事件 300 秒。 此外,只有在 WMI 在該 300 秒內收到五個以上的電子郵件事件時,才會傳遞查詢要求 __AggregateEvent 實例。

SELECT * FROM EmailEvent GROUP WITHIN 300 HAVING NumberOfEvents > 5

下列範例會將 600 秒(也就是 10 分鐘)收到的所有事件分組 TargetInstanceSourceName 屬性。 在此範例中,只有在從相同來源收到的 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