HAVING 句
HAVING 句は、WITHIN 句で指定されたグループ間隔中に受信したイベントをフィルター処理するために使用されます。 たとえば、SELECT ステートメントは、過去 30 秒間隔に少なくとも 5 つのイベントがない限り、何も返さないよう構築できます。
GROUP 句の後の SELECT ステートメントの直後に WITHIN 句があります。 HAVING 句は、GROUP 句によって作成されたグループがメンバーである __AggregateEvent システム クラスの NumberOfEvents プロパティに対して動作します。 HAVING 句では、すべての標準の関係演算子を使用できます。
構文は次のとおりです。
SELECT * FROM EventClass [WHERE property = value]
GROUP WITHIN interval [BY property_list]
HAVING NumberOfEvents operator constant
EventClass 値はイベントがメンバーであるイベント クラスであり、value は通知が必要なプロパティの値です。 interval は、最初のイベントを受信した後のグループ間隔 (秒単位) を表す符号なし整数です。 プロパティ リストは、イベント クラスに含まれる 1 つ以上のプロパティのコンマ区切りのリストです。 演算子は任意の関係演算子です。 定数値は、フィルター処理に使用されるイベントの数を示す、任意の符号なし 32 ビット整数です。
HAVING 句を使用する場合、WHERE および BY 句は省略可能です。
次のイベント クエリでは、EmailEvent クラスの通知を、WMI で受信した最初のイベントの 300 秒後に 1 つのイベントにグループ化するように要求します。 また、クエリでは、その 300 秒間で 5 つを超えるメール イベントを WMI で受信した場合にのみ __AggregateEvent インスタンスを配信するように要求します。
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