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